I have read through several posts on SO as well as other sites, but I can't seem to find the fix for my problem. I have a gridview in which I use a dropdown list in the EditItem template of a field. When I press the Update button the gridview doesn't update the database.
Here is the sql data source and gridview that I'm using:
<asp:HiddenField ID="hdn_crnt_user" runat="server" />
<asp:SqlDataSource ID="sdc_gv_queue" runat="server"
ConnectionString='<%$ ConnectionStrings:ConnectionString %>'
OldValuesParameterFormatString="original_{0}"
SelectCommand="SELECT tv.vendor_nm
,tv.vendor_id_pk
,td.doc_title
,td.doc_id_pk
,tdr.doc_rvw_id_pk
,tdrs.doc_rvw_sub_id_pk
,tdrs.doc_rvw_sub_dt
,tdrs.doc_rvw_sub_status_list
,tsl.rvw_status AS txt_rvw_status
FROM tbl_vendor tv
INNER JOIN tbl_doc td
ON tv.vendor_id_pk=td.vendor_id_fk
INNER JOIN tbl_doc_rvw tdr
ON td.doc_id_pk=tdr.doc_id_fk
INNER JOIN tbl_doc_rvw_sub tdrs
ON tdr.doc_rvw_id_pk=tdrs.doc_rvw_id_fk
INNER JOIN tbl_ad_users tau
ON tau.domain_user=tdrs.doc_rvw_sub_domain_user
INNER JOIN tbl_status_list tsl
ON tdrs.doc_rvw_sub_status_list=tsl.rvw_status_id_pk
WHERE ((tdrs.doc_rvw_sub_status_list IN (2, 4)) AND ([doc_rvw_sub_domain_user] = @doc_rvw_sub_domain_user))"
UpdateCommand="
UPDATE [tbl_doc_rvw_sub]
SET [doc_rvw_sub_status_list] = @doc_rvw_sub_status_list
WHERE [doc_rvw_sub_status_list] = @original_doc_rvw_sub_status_list AND [doc_rvw_sub_id_pk] = @original_doc_rvw_sub_id_pk">
<SelectParameters>
<asp:ControlParameter ControlID="hdn_crnt_user" PropertyName="Value" Name="doc_rvw_sub_domain_user" Type="String"></asp:ControlParameter>
</SelectParameters>
<UpdateParameters>
<asp:Parameter Name="original_doc_rvw_sub_id_pk" type="Int32" />
<asp:Parameter Name="original_doc_rvw_sub_status_list" Type="Int32" />
</UpdateParameters>
</asp:SqlDataSource>
<asp:GridView
ID="gv_queue"
runat="server"
DataSourceID="sdc_gv_queue"
DataKeyNames="doc_rvw_sub_id_pk"
AllowPaging="True"
AllowSorting="True"
AutoGenerateColumns="False">
<Columns>
<asp:CommandField ShowSelectButton="True" ShowEditButton="True"></asp:CommandField>
<asp:BoundField DataField="vendor_nm" HeaderText="Vendor" SortExpression="vendor_nm" HeaderStyle-CssClass="gv_hdr_style" ReadOnly="true" >
<HeaderStyle CssClass="gv_hdr_style"></HeaderStyle>
</asp:BoundField>
<asp:BoundField DataField="vendor_id_pk" HeaderText="Vendor ID" InsertVisible="False" SortExpression="vendor_id_pk" HeaderStyle-CssClass="gv_hdr_style" ReadOnly="true">
<HeaderStyle CssClass="gv_hdr_style"></HeaderStyle>
<ItemStyle HorizontalAlign="Center" />
</asp:BoundField>
<asp:BoundField DataField="doc_title" HeaderText="Document" SortExpression="doc_title" HeaderStyle-CssClass="gv_hdr_style" ReadOnly="true" >
<HeaderStyle CssClass="gv_hdr_style"></HeaderStyle>
</asp:BoundField>
<asp:BoundField DataField="doc_id_pk" HeaderText="Doc. ID" InsertVisible="False" SortExpression="doc_id_pk" HeaderStyle-CssClass="gv_hdr_style" ReadOnly="true">
<HeaderStyle CssClass="gv_hdr_style"></HeaderStyle>
<ItemStyle HorizontalAlign="Center" />
</asp:BoundField>
<asp:BoundField DataField="doc_rvw_id_pk" HeaderText="Review" InsertVisible="False" SortExpression="doc_rvw_id_pk" HeaderStyle-CssClass="gv_hdr_style" ReadOnly="true">
<HeaderStyle CssClass="gv_hdr_style"></HeaderStyle>
<ItemStyle HorizontalAlign="Center" />
</asp:BoundField>
<asp:BoundField DataField="doc_rvw_sub_id_pk" HeaderText="Submission" InsertVisible="False" SortExpression="doc_rvw_sub_id_pk" HeaderStyle-CssClass="gv_hdr_style" ReadOnly="true">
<HeaderStyle CssClass="gv_hdr_style"></HeaderStyle>
<ItemStyle HorizontalAlign="Center" />
</asp:BoundField>
<asp:BoundField DataField="doc_rvw_sub_dt" HeaderText="Date Submitted" DataFormatString="{0:MM/dd/yyyy}" SortExpression="doc_rvw_sub_dt" HeaderStyle-CssClass="gv_hdr_style" ReadOnly="true">
<HeaderStyle CssClass="gv_hdr_style"></HeaderStyle>
<ItemStyle HorizontalAlign="Center" />
</asp:BoundField>
<asp:TemplateField HeaderText="Submission Status" HeaderStyle-CssClass="gv_hdr_style" SortExpression="doc_rvw_sub_status_list">
<EditItemTemplate>
<asp:DropDownList
ID="DropDownList1"
runat="server"
DataSourceID="sdc_doc_rvw_sub_status_list"
DataTextField="rvw_status"
DataValueField="rvw_status_id_pk"
AppendDataBoundItems="true"
SelectedValue='<%# Bind("doc_rvw_sub_status_list") %>'>
<asp:ListItem Value="">Please Select</asp:ListItem>
</asp:DropDownList>
<asp:SqlDataSource
ID="sdc_doc_rvw_sub_status_list"
runat="server"
ConnectionString='<%$ ConnectionStrings:ConnectionString %>'
SelectCommand="SELECT [rvw_status_id_pk], [rvw_status] FROM tbl_status_list WHERE [rvw_status_active_yn] = '3'"/>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("txt_rvw_status") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<EditRowStyle BackColor="#BCC7D9" Font-Bold="true" HorizontalAlign="Center" />
<FooterStyle BackColor="#044C92" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="#044C92" Font-Bold="True" ForeColor="White" HorizontalAlign="Center" />
<PagerSettings Mode="NumericFirstLast" />
<PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
<RowStyle BackColor="#EFF3FB" HorizontalAlign="Center" />
<SelectedRowStyle BackColor="#BCC7D9" Font-Bold="True" ForeColor="#333333" />
<SortedAscendingCellStyle BackColor="#F5F7FB" />
<SortedAscendingHeaderStyle BackColor="#6D95E1" />
<SortedDescendingCellStyle BackColor="#E9EBEF" />
<SortedDescendingHeaderStyle BackColor="#4870BE" />
</asp:GridView>
I went through and made sure I have the primary key of the database table to be updated set as the DataKeyName for the gridview. I'm not sure if anything is wrong in the UpdateCommand, but it appears to be correct.
You need to Databind your GridView again.
So, I will say, declare the RowUpdating command on your Grid, and then, in the code behind, in the event handler for the RowUpdating event, bind your gridview to your datasource again, as below.
protected void gv_queue_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
//GridViewRow row = (GridViewRow)gv_queue.Rows[e.RowIndex];
gv_queue.DataBind();
}
In the gridview I replaced doc_rvw_id_pk from tbl_doc_rvw with the foreign key doc_rvw_id_fk from tbl_doc_rvw_sub, which is the table that I was updating. It now works.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.