隐藏详细信息视图控件中的字段,但仍包含更新查询中的值

时间:2013-06-25 03:18:09

标签: asp.net sql-server query-string detailsview databound

我很好奇人们如何在最终用户中隐藏一行,但仍然将其包含在asp.net的detailsview控件的更新过程中。我在DetailsView控件中有以下字段。

<Fields>
    <asp:BoundField DataField="PropertyID" HeaderText="Property ID" SortExpression="PropertyID" InsertVisible="False" ReadOnly="True" Visible="False" />
    <asp:BoundField DataField="SupplierID" HeaderText="Supplier ID" SortExpression="SupplierID" InsertVisible="False" ReadOnly="True" Visible="False" />
    <asp:BoundField DataField="Address" HeaderText="Address" SortExpression="Address" />
    <asp:BoundField DataField="AddressUnit" HeaderText="Suite/Unit" SortExpression="AddressUnit" />
    <asp:BoundField DataField="AddressCity" HeaderText="City" SortExpression="AddressCity" />
    <asp:BoundField DataField="AddressProvince" HeaderText="Province" SortExpression="AddressProvince" />
    <asp:BoundField DataField="AddressPostalCode" HeaderText="Postal Code" SortExpression="AddressPostalCode" />
    <asp:BoundField DataField="Phone" HeaderText="Phone" SortExpression="Phone" />
    <asp:BoundField DataField="Fax" HeaderText="Fax" SortExpression="Fax" />
    <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" ShowInsertButton="True" />
</Fields>

当SupplierID的Visibility设置为false时,该行不再更新。将其设置为true允许应用程序正常更新。我甚至认为,鉴于以下配置,PropertyID和SupplierID都可以免于详细信息视图,但是直接删除字段也会阻止它更新。

我有以下更新参数。

<UpdateParameters>
    <asp:QueryStringParameter Name="SupplierID" QueryStringField="ID" Type="Int32" />
    <asp:Parameter Name="Address" Type="String" />
    <asp:Parameter Name="AddressUnit" Type="String" />
    <asp:Parameter Name="AddressCity" Type="String" />
    <asp:Parameter Name="AddressProvince" Type="String" />
    <asp:Parameter Name="AddressPostalCode" Type="String" />
    <asp:Parameter Name="Phone" Type="String" />
    <asp:Parameter Name="Fax" Type="String" />
    <asp:Parameter Name="original_PropertyID" Type="Int32" />
    <asp:Parameter Name="original_SupplierID" Type="Int32" />
    <asp:Parameter Name="original_Address" Type="String" />
    <asp:Parameter Name="original_AddressUnit" Type="String" />
    <asp:Parameter Name="original_AddressCity" Type="String" />
    <asp:Parameter Name="original_AddressProvince" Type="String" />
    <asp:Parameter Name="original_AddressPostalCode" Type="String" />
    <asp:Parameter Name="original_Phone" Type="String" />
    <asp:Parameter Name="original_Fax" Type="String" />
</UpdateParameters>

我的更新命令如下:

UpdateCommand="UPDATE [SupplierProperty] SET [Address] = @Address, [AddressUnit] = @AddressUnit, [AddressCity] = @AddressCity, [AddressProvince] = @AddressProvince, [AddressPostalCode] = @AddressPostalCode, [Phone] = @Phone, [Fax] = @Fax WHERE [PropertyID] = @original_PropertyID AND [SupplierID] = @original_SupplierID AND [Address] = @original_Address AND (([AddressUnit] = @original_AddressUnit) OR ([AddressUnit] IS NULL AND @original_AddressUnit IS NULL)) AND [AddressCity] = @original_AddressCity AND [AddressProvince] = @original_AddressProvince AND [AddressPostalCode] = @original_AddressPostalCode AND [Phone] = @original_Phone AND (([Fax] = @original_Fax) OR ([Fax] IS NULL AND @original_Fax IS NULL))"

尽管查询设置为使用从查询字符串参数获取的ID,但如果详细信息视图中缺少SupplierID字段或用户不可见,则记录无法更新。

有人可以提供一些见解,我应该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

啊,看来我应该更改UpdateCommand中的WHERE子句,以针对querystringparameter而不是original_propertyID参数检查supplierID。