【问题标题】:asp .net checkbox inside gridview checked选中gridview内的asp .net复选框
【发布时间】:2011-07-05 20:34:41
【问题描述】:

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

  <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>

【问题讨论】:

    标签: asp.net checkbox


    【解决方案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方法来检索您需要的数据

    【讨论】:

    • 好的。让我试试你的解决方案。谢谢!
    • 嗨,但是 Gridview 本身绑定到 id 为“alldata”的 sqldatasource,而复选框需要根据 id 为“SqlDataSource1”的 sqldatasource 中的值填充或不填充。所以你的解决方案行不通?
    • @Meengla 你可以使用DataSource的Select方法来获取你需要的数据
    • 但是怎么做呢?我已经卡了半天,所以如果容易指出,请这样做。
    • 您应该阅读有关此方法的文档,并且您没有提供有关选中/取消选中复选框的规则的任何信息
    猜你喜欢
    • 2021-08-25
    • 1970-01-01
    • 1970-01-01
    • 2018-04-29
    • 2016-09-23
    • 1970-01-01
    • 2021-05-13
    • 2010-11-13
    • 2013-10-25
    相关资源
    最近更新 更多