Click here to Skip to main content
15,893,588 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
How do I perform a GridView Update on a database table which has no primary key?

I have coded an onupdatecommand but it is not firing. Here are my codes:

.aspx
C#
<asp:ScriptManager ID="ScriptManager" runat="server" />
          MSG_ID:  <asp:TextBox ID="txtsearchMSGID" runat="server" OnTextChanged="txtsearchMSGID_TextChanged"></asp:TextBox>
          <asp:Button ID="clearButton" runat="server" Text="Clear" Width="75px" />
                <asp:Label ID="Message" runat="server" Text="Message"></asp:Label>
                <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                    <ContentTemplate>

                        <asp:GridView ID="GridView1" runat="server" AllowPaging="True" 
                            OnRowUpdated="GridView1_RowUpdated"
                            OnRowCancelingEdit="GridView1_RowCancelingEdit"
                            OnRowEditing="GridView1_RowEditing"  BackColor="White" 
                            BorderColor="#999999" BorderWidth="1px" CellPadding="3" DataSourceID="SqlDataSource1" GridLines="Vertical" AutoGenerateColumns="False" DataKeyNames="MSG_ID">
                            
                            <AlternatingRowStyle BackColor="#DCDCDC" />
                            <Columns>
                                <asp:CommandField ShowEditButton="True" />
                                <asp:BoundField DataField="MSG_ID" HeaderText="MSG_ID" SortExpression="MSG_ID" />
                                <asp:BoundField DataField="ACTION_IND" HeaderText="ACTION_IND" SortExpression="ACTION_IND" />
                                <asp:BoundField DataField="ACTION_DATE" HeaderText="ACTION_DATE" SortExpression="ACTION_DATE" />
                                <asp:BoundField DataField="USERNAME" HeaderText="USERNAME" SortExpression="USERNAME" />
                            <asp:CommandField ShowInsertButton="false" ShowEditButton="true" ShowDeleteButton="false" />
                            </Columns>
                            <FooterStyle BackColor="#CCCCCC" ForeColor="Black" />
                            <HeaderStyle BackColor="#000084" Font-Bold="True" ForeColor="White" />
                            <PagerStyle BackColor="#999999" ForeColor="Black" HorizontalAlign="Center" />
                            <RowStyle BackColor="#EEEEEE" ForeColor="Black" />
                            <SelectedRowStyle BackColor="#008A8C" Font-Bold="True" ForeColor="White" />
                            <SortedAscendingCellStyle BackColor="#F1F1F1" />
                            <SortedAscendingHeaderStyle BackColor="#0000A9" />
                            <SortedDescendingCellStyle BackColor="#CAC9C9" />
                            <SortedDescendingHeaderStyle BackColor="#000065" />
                        </asp:GridView>
                        <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:gsiadmin %>" ProviderName="<%$ ConnectionStrings:gsiadmin.ProviderName %>"
                            SelectCommand="SELECT * FROM GSI_SWIFT_AUDIT"
                            UpdateCommand="UPDATE GSI_SWIFT_AUDIT SET [ACTION_IND]=@ACTION_IND, [ACTION_DATE]=@ACTION_DATE, [USERNAME]=@USERNAME WHERE ([MSG_ID]=@MSG_ID)"
                            FilterExpression="MSG_ID = {0}">
                            <FilterParameters>
                                <asp:ControlParameter Name="txtsearchMSGID" ControlID="txtsearchMSGID" PropertyName="Text" />
                            </FilterParameters>
                            <UpdateParameters>
                                <asp:Parameter Name="MSG_ID" Type="Decimal" />
                                <asp:Parameter Name="ACTION_IND" Type="String" />
                                <asp:Parameter Name="ACTION_DATE" Type="DateTime" />
                                <asp:Parameter Name="USERNAME" Type="String" />
                            </UpdateParameters>
                            <InsertParameters>
                                <asp:Parameter Name="MSG_ID" Type="Decimal" />
                                <asp:Parameter Name="ACTION_IND" Type="String" />
                                <asp:Parameter Name="ACTION_DATE" Type="DateTime" />
                                <asp:Parameter Name="USERNAME" Type="String" />
                            </InsertParameters>
                        </asp:SqlDataSource>
                    </ContentTemplate>
                    <Triggers>
                        <asp:AsyncPostBackTrigger ControlID="txtsearchMSGID" EventName="TextChanged" />
                    </Triggers>
                </asp:UpdatePanel>


.aspx.cs
C#
public partial class Approve_Swift : System.Web.UI.Page
{
    string MSGID = "";
    protected void Page_Load(object sender, EventArgs e)
    {
        txtsearchMSGID.Attributes.Add("onkeyup", "setTimeout('__doPostBack(\\'" + txtsearchMSGID.ClientID.Replace("_", "$") + "\\',\\'\\')', 0);");
        if (!IsPostBack)
        {
            GridView1.DataBind();
        }
    }

    protected void Clear_Click(object sender, EventArgs e)
    {
        txtsearchMSGID.Text = "";
    }



    protected void txtsearchMSGID_TextChanged(object sender, EventArgs e)
    {
        MSGID = txtsearchMSGID.Text;

    }

    protected void GridView1_RowUpdated(Object sender, GridViewUpdatedEventArgs e)
    {

        // Indicate whether the update operation succeeded.
        if (e.Exception == null)
        {
            Message.Text = "Row updated successfully.";
        }
        else
        {
            e.ExceptionHandled = true;
            Message.Text = "An error occurred while attempting to update the row.";
        }

    }

    protected void GridView1_RowCancelingEdit(Object sender, GridViewCancelEditEventArgs e)
    {

        // The update operation was canceled. Clear the message label.
        Message.Text = "";

    }

    protected void GridView1_RowEditing(Object sender, GridViewEditEventArgs e)
    {
        // The GridView control is entering edit mode. Clear the message label.
        GridView1.EditIndex = e.NewEditIndex;
        DataBind();
        Message.Text = "";
    }
}



C#

Posted
Updated 5-May-15 16:34pm
v2
Comments
InbarBarkai 6-May-15 0:23am    
Why on earth would you have a table with no primary key?
Primary key is the unique identifier for the record you are updating.
Updating without it may damage your data.
Member 11667493 6-May-15 4:24am    
I know too... but this database was given to me by someone, trying to add a primary key is impossible either. :\
Mantu Singh 6-May-15 6:20am    
Pray tell me why is it impossible

1 solution

I suggest you take a identity column in your table make it primary key this will give each record a serial no which u can use in your data operations

Just give it a try!!
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900