gridview中的asp .net复选框已选中

时间:2011-07-05 20:34:42

标签: asp.net checkbox

我有一个主要的'产品'表和'Products_Recommended'表。我希望用户能够使用复选框从GridView中选择多个产品,然后将这些产品ID(prodid)插入到Products_Recommended表中,以便输入主产品ID(来自查询字符串),并可能推荐几个ProdID进入。到现在为止还挺好。 但是,如果之前的Products_Recommended表中已有prodids,我需要能够显示要检查的复选框。 下面的代码显示了一个'sqldatasource1',它根据查询字符串从Products_Recommended表中获取数据。我只是不知道如何检查复选框,因为GridView具有不同的sqldatasource绑定它。 谢谢! Meengla

  <form id="form1" runat="server">
<asp:GridView ID="Products" runat="server" AutoGenerateColumns="False" DataKeyNames="prodid"
    DataSourceID="alldata" EnableModelValidation="True">
    <Columns>
        <asp:TemplateField>
            <ItemTemplate>
                <asp:CheckBox ID="ProductSelector" runat="server" />
            </ItemTemplate>
        </asp:TemplateField>
        <asp:BoundField  DataField="itemnumber" HeaderText="Item Number" SortExpression="itemnumber" />

        <asp:BoundField DataField="itemtitle" HeaderText="itemtitle" SortExpression="itemtitle" />
    </Columns>
</asp:GridView>
<p>
    <asp:Button ID="SelectedProducts" runat="server" Text="Recommend" OnClick="SelectedProducts_Click" />
</p>
<p>
    <asp:Label ID="lblProdSelected" runat="server" EnableViewState="False" Visible="False"></asp:Label>
</p>
<asp:SqlDataSource ID="alldata" runat="server" ConnectionString="<%$ ConnectionStrings:dbconnection %>"
    SelectCommand="SELECT * FROM Products">
    <SelectParameters>
        <asp:QueryStringParameter DefaultValue="14" Name="itemid" QueryStringField="itemid"
            Type="Int32" />
    </SelectParameters>
</asp:SqlDataSource>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:dbconnection %>"
    SelectCommand="SELECT * FROM dbo.products_recommended WHERE prodid = @itemid)">
    <SelectParameters>
        <asp:QueryStringParameter DefaultValue="14" Name="itemid" QueryStringField="itemid"
            Type="Int32" />
    </SelectParameters>
</asp:SqlDataSource>

1 个答案:

答案 0 :(得分:1)

处理RowDataBound事件,并在方法find the checkbox中设置其Checked值。

<asp:GridView ID="Products" OnRowDataBound="GridViewRowEventHandler">

void CustomersGridView_RowDataBound(Object sender, GridViewRowEventArgs e)
{
  if(e.Row.RowType == DataControlRowType.DataRow)
  {
    var ProductSelector = e.Row.FindControl("ProductSelector") as CheckBox;
    ProductSelector.Checked = true;
  }
}

您可以使用DataSource的Select方法检索所需的数据