Arama butonu
Bu konudaki kullanıcılar: 1 misafir
2
Cevap
397
Tıklama
0
Öne Çıkarma
Datalist Icinde TextChanged Kullanimi ?
S
10 yıl
Onbaşı
Konu Sahibi

Merhaba arkadaslar. Yapmakta oldugum bir okul yonetim sisteminde, guncelleme yapmak isterken hata aliyorum.

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 >

K
10 yıl
Yarbay

Foreachle icinde dondugunuz nesneyi modify edemezsiniz. For dongusu kullanin



< Bu ileti mobil sürüm kullanılarak atıldı >

S
10 yıl
Onbaşı
Konu Sahibi

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)
{

TextBox txtbox = (TextBox)dl2i.FindControl("TextBox2");
Label rbl = (Label)dl2i.FindControl("Label7");

SqlCommand cmdupdate = DBTools.Komut("update Exams set Exam=@Exam where ExamID=@ExamID");

cmdupdate.Parameters.AddWithValue("@Exam", SqlDbType.SmallInt).Value = (txtbox == null ? string.Empty : txtbox.Text);
cmdupdate.Parameters.AddWithValue("@ExamID", rbl.Text);

try
{
cmdupdate.Connection.Open();
cmdupdate.ExecuteNonQuery();
cmdupdate.Connection.Close();
}
catch (Exception)
{

throw;
}
}
}
}
} ExamDoldur();




Bu mesajda bahsedilenler: @Kaygerya
DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.