更新gridview:无法在ControlParameter'参数'中找到控件'gvname $ chkBool'。

时间:2016-05-04 19:45:51

标签: asp.net aspxgridview

我正在尝试将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函数中的变量与数据库查询中的字段不匹配吗?这会更好地作为存储过程而不是和更新命令吗?有谁知道如何解决它?

提前致谢!

0 个答案:

没有答案