2011-07-05 282 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