Kaygerya ilgilendigin icin tesekkur ederim. Farkli bir sekilde sorunu cozdum. O hatanin sebebi method mus. ExamDoldur(); u parantezin disina atarak sorunu cozdum.
Ilgilenenler icin :
foreach (DataListItem dl1 in DataList1.Items) { if (dl1.ItemType == ListItemType.Item || dl1.ItemType == ListItemType.AlternatingItem) { DataList DataList2 = (DataList)dl1.FindControl("DataList2"); if (DataList2 != null) { foreach (DataListItem dl2i in DataList2.Items) {
DataList1 icinde DataList2 kullanarak textchanged ile guncelleme yapmak istiyorum. Fakat su hatayi aliyorum
Collection was modified; enumeration operation may not execute.
Bu islem icin kullandigim kod soyle :
<asp:DataList ID="DataList2" runat="server" RepeatDirection="Horizontal">
<ItemTemplate>
<asp:LinkButton ID="Label7" runat="server" Text='<%# Eval("ExamID") %>' ForeColor="Black" Visible="False"></asp:LinkButton>
<asp:TextBox ID="TextBox2" runat="server" Text='<%# Eval("Exam") %>' Width="18px" AutoPostBack="True" ontextchanged="TextBox2_TextChanged"></asp:TextBox>
</ItemTemplate>
</asp:DataList>
Burdaki DataList2, DataList1'in icinde yer aliyor.
protected void TextBox2_TextChanged(object sender, EventArgs e)
{
foreach (DataListItem dli in DataList1.Items)
{
DataList DataList2 = (DataList)dli.FindControl("DataList2");
TextBox TextBox2 = (TextBox)DataList2.FindControl("TextBox2");
LinkButton Label7 = (LinkButton)DataList2.FindControl("Label7");
SqlCommand cmdupdate = DBTools.Komut("update Exams set Exam=@Exam where ExamID=@ExamID");
cmdupdate.Parameters.AddWithValue("@Exam", Convert.ToInt32(TextBox2));
cmdupdate.Parameters.AddWithValue("@ExamID", Convert.ToInt32(Label7));
try
{
cmdupdate.Connection.Open();
cmdupdate.ExecuteNonQuery();
ExamDoldur();
cmdupdate.Connection.Close();
}
catch (Exception)
{
throw;
}
}
}
veritabani ise
ExamID int
Exam smallint
Yardimci olabilerseniz buyuk bir bolumu bitmis olacak. Tesekkur ederim.
< Bu mesaj bu kişi tarafından değiştirildi stylemania -- 14 Eylül 2015; 15:47:29 >