2
在這裏輸入代碼我在GridView
模板中有一個CheckBox
。當檢測到CheckBox
時,它應該將列值發送到存儲過程,並在另一個gridview
中顯示所需的結果。 當兩個複選框被選中時,兩列的值應該顯示在另一個gridview中。在gridview中選擇多個複選框
我的問題是,單擊第二個複選框將刪除第一個複選框的值,並且僅導致第二個複選框的值顯示在另一個gridview中。
protected void ChkRule_CheckedChanged(object sender, EventArgs e)
{
StringCollection sc = new StringCollection();
for (int i = 0; i < gdYojnaDtl.Rows.Count; i++)
{
string yojnaNo = "";
CheckBox chl = (CheckBox)gdYojnaDtl.Rows[i].Cells[0].FindControl("CheckBox1");
//CheckBox chl = (CheckBox)sender;
if (chl != null)
{
if (chl.Checked == true)
{
int rowsNo = (Convert.ToInt16(chl.ToolTip) - 1);
yojnaNo = ((Label)gdYojnaDtl.Rows[rowsNo].FindControl("lblYojnaNo")).Text;
sc.Add(yojnaNo);
}
}
}
foreach (string obj in sc)
{
objyojnadetail4.YojnaNo = obj;
DataTable city = objyojnadetail4.Selectcity();
gdCityDetail.DataSource = city;
gdCityDetail.DataBind();
}
}
<Columns>
<asp:TemplateField HeaderText="Scheme Code">
<ItemTemplate>
<asp:Label ID="lblYojnaNo" runat="server" Text='<%#Eval("Yojna_No")%>' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Scheme Name">
<ItemTemplate>
<asp:Label ID="lblYojnaName" runat="server" Text='<%#Eval("Yojna_Name")%>' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Assistant Name">
<ItemTemplate>
<asp:Label ID="lblAsstName" runat="server" Text=' <%#Eval("Asst_Name")%>' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Select for City">
<ItemTemplate>
<asp:CheckBox ID="CheckBox1" runat="server" AutoPostBack="true"
oncheckedchanged="ChkRule_CheckedChanged"
ToolTip="<%#Container.DataItemIndex+1 %> " CommandName="cbCity"/>
</ItemTemplate>
</asp:TemplateField>
</Columns>
你重裝了'GridView'從'Page_Load'回發?使用這個:'if(!Page.IsPostBack)DataBindGrid();'。 –
@tim數據沒有在網格視圖中通過你的解決方案獲得綁定 – Himanshu
它應該工作,因爲'ViewState'是默認啓用的。如果在每次回發中重新加載網格,則可防止觸發事件並覆蓋更改的值(如「CheckBox.Checked」)。 –