2011-07-05 288 views
1

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

<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

处理的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; 
    } 
} 

您可以使用数据源的Select方法来检索数据,您需要

+0

好。让我试试你的解决方案。谢谢! – IrfanClemson

+0

@Meengla不要忘记upvote它是否对你有用:) – VMAtm

+0

嗨,但Gridview本身绑定到ID为'alldata'的sqldatasource,而复选框需要填充或不基于sqldatasource的值与'SqlDataSource1'的ID。所以你的解决方案将无法工作? – IrfanClemson