Ich möchte einige Daten, die in Array-Liste eingecheckt ist. Ich habe Kontrollkästchen zu Gridview hinzugefügt und wenn ich eines der Elemente überprüft. click event von checkbox runs für alle also zB habe ich zwei daten wenn ich auf das any checkbox klicke es läuft 4 mal, so dass es für jeden funktioniert aber ich möchte das nur das einzelteil eines checkboxes welches angehakt oder unchecked ist hinzugefügt auflisten. Gibt es eine Lösung oder eine andere Lösung?Wie kann ich Artikel hinzufügen, die auf Arraylist in Gridview überprüft werden C# asp.net
// checkbox click event
protected void SelectedFriends_Click(object sender, EventArgs e)
{
bool isflag=false;
foreach (GridViewRow row in GridView1.Rows)
{
// Access the CheckBox
CheckBox cb = (CheckBox)row.FindControl("FriendSelector");
if (cb != null && cb.Checked)
{
string friendname = GridView1.Rows[row.RowIndex].Cells[1].Text.ToString();
for (int i = 0; i < list.Count; i++)
{
if (friendname.Equals(list[i].ToString()))
{
isflag = true;
}
}
// if it is added previously don't add to list
if(!isflag)
{
list.Add(friendname);
}
}
else
{
string friendname = GridView1.Rows[row.RowIndex].Cells[1].Text.ToString();
for (int i = 0; i < list.Count; i++)
{
if (friendname.Equals(list[i].ToString()))
{
isflag = true;
}
}
// if it is not checked and it is in list delete it from list
if(isflag)
{
list.Remove(friendname);
}
}
}
}
<asp:GridView ID="GridView1" runat="server" AllowPaging="True"
AutoGenerateColumns="False" DataSourceID="SqlDataSource1" Font-Bold="True"
Width="157px">
<Columns>
<asp:TemplateField HeaderText="Select">
<ItemTemplate>
<asp:CheckBox runat="server" id="FriendSelector"
oncheckedchanged="SelectedFriends_Click" AutoPostBack="True">
</asp:CheckBox>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="F_Name" HeaderText="Friend Name"
SortExpression="F_Name" />
</Columns>
</asp:GridView>
es scheint, dass Daten erfolgreich hinzugefügt wird, aber list.Count() gleich 0 Ich verstehe nicht, den Grund, wenn ich einen buttoon void button1_Click geschützt klicken (Senderobjekt, EventArgs e) { if (Liste. Count == 0) { Label1.Text = "Es gibt keinen ausgewählten Freund"; } sonst { DBConnection db = neue DBConnection(); Boolesches Ergebnis = db.ShareRSS (selectedId, Benutzername, Liste); } } – leventkalayz
Wenn Sie eine Variable außerhalb aller Funktionen ('global') deklarieren, wird ihr Status nach dem Postback nicht beibehalten. Sie müssen also Session verwenden. Fügen Sie nach dem Hinzufügen aller Elemente eine Liste zur Sitzung in der obigen Funktion hinzu. Dann, wo Sie die Liste überprüfen, nehmen Sie es aus der Sitzung. – PraveenVenu
Vielen Dank es funktioniert – leventkalayz