【发布时间】:2015-10-19 22:41:38
【问题描述】:
我已经阅读了 SO 以及其他网站上的几篇文章,但我似乎无法找到解决我的问题的方法。我有一个gridview,我在其中使用字段的EditItem 模板中的下拉列表。当我按下更新按钮时,gridview 不会更新数据库。
这是我正在使用的sql数据源和gridview:
<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>
我检查并确保将要更新的数据库表的主键设置为网格视图的 DataKeyName。我不确定 UpdateCommand 中是否有任何问题,但它似乎是正确的。
【问题讨论】: