我正在尝试将gridview中的复选框作为gridview中的更新参数。我想要更新的字段author_approved_updated是一个二进制字段,有时它是null,所以我必须在select查询字符串中创建一个字段,以确保它总是返回一个非空值。
但每次我尝试代码时,都会收到有关如何在控制参数中找不到控件的错误消息。我在这里查了一下,很多人建议在gridview名称和参数名称之间加上$。可悲的是,这也不起作用。
无法在ControlParameter'author_approved_updated'中找到控件'gvSops $ chkAAU'。
<asp:GridView runat="server" ID="gvSops" DataSourceID="dsSops" AutoGenerateColumns="false" AllowSorting="true" AutoGenerateEditButton="true" DataKeyNames="sopID">
<Columns>
...
<asp:TemplateField HeaderText="Author Approved Updated" SortExpression="author_approved_updated">
<EditItemTemplate>
<asp:CheckBox runat="server" ID="chkAAU" Checked='<%# Bind("boolAAU") %>' />
</EditItemTemplate>
<ItemTemplate>
<asp:CheckBox runat="server" ID="chkAAU" Checked='<%# Bind("boolAAU") %>' Enabled="false" />
</ItemTemplate>
</asp:TemplateField>
...
</gridview>
<asp:SqlDataSource ID="dsSops" runat="server" ConnectionString="<%$ ConnectionStrings:AMS %>"
SelectCommandType="Text"
SelectCommand="SELECT *, isnull(author_approved_updated, 0) as boolAAU FROM AMS_SOPs"
UpdateCommandType="Text"
updatecommand="Update AMS_SOPs SET
author_approved_updated = @author_approved_updated
WHERE (sopID = @sopID)"
>
<UpdateParameters>
<asp:ControlParameter ControlID="gvSops$chkAAU" PropertyName="Checked" Name="author_approved_updated" Type="Boolean" ConvertEmptyStringToNull="false" />
</UpdateParameters>
我不知道还能做什么。 bind函数中的变量与数据库查询中的字段不匹配吗?这会更好地作为存储过程而不是和更新命令吗?有谁知道如何解决它?
提前致谢!