PDA

View Full Version : سوال: دسترسی به یک سطر گرید ویو با checkbox--غیر تکراری



fardin_esmi
سه شنبه 07 خرداد 1392, 08:53 صبح
سلام بر همه اساتید
من تمام مباحث مربوط به این قضیه ای که مطرح کردم رو خوندم (هم در این سایت ،هم جاهای دیگه). lمشکل اینه که چه checkbox رو تیک بزنم چه نزنم هیچ وقت وارد حلقه if نمیشه دو قطعه کد برای دسترسی به سطر گرید ویو نوشتم ولی توی هر دوتا همین مشکل هست :


protected void btnSelect_Click(object sender, EventArgs e)
{
int i= 0;
CheckBox chk = new CheckBox();
for (i = 0; i <= gvSelect.Rows.Count - 1; i++)
{
chk = (CheckBox)gvSelect.Rows[i].FindControl("chkSelect");
if (chk!=null && chk.Checked)
{
code=gvSelect.Rows[i].FindControl("کد").ToString();
}
}

در این قطعه کد chk اصلا مقدار نمیگیره و هیچ وقت وارد حلقه if نمی شه، چه checkbox رو تیک بزنم جه نزنم. البته من از کد زیر هم استفاده کردم اما باز هم در اینجا cb مقدار نمیگیره :



foreach (GridViewRow row in gvSelect.Rows)
{
// Access the CheckBox
CheckBox cb = (CheckBox)row.FindControl("chkSelect");
if (cb != null && cb.Checked)
{

string s = gvSelect.DataKeys[row.RowIndex].Value.ToString();
int i = Convert.ToInt32(s);
code = gvSelect.Rows[i].FindControl("کد").ToString();

}
}


این هم گرید ویو ای که دارم:


<asp:GridView ID="gvSelect" runat="server" AutoGenerateColumns="False"
Font-Size="8pt" EmptyDataText="هنوز درسی ارائه نشده است." >
<AlternatingRowStyle BackColor="#FFFF99" />
<Columns>
<asp:BoundField DataField="code_class" HeaderText="کد" >
<HeaderStyle Width="20px" />
</asp:BoundField>
<asp:BoundField DataField="fname" HeaderText="نام" >
<HeaderStyle Width="60px" />
</asp:BoundField>
<asp:BoundField DataField="lname" HeaderText="نام خانوادگی" >
<HeaderStyle Width="80px" />
</asp:BoundField>
<asp:BoundField DataField="fromdate" HeaderText="شروع "
DataFormatString="{0:yyyy/MM/dd}" SortExpression="fromdate" >
<HeaderStyle Width="70px" />
</asp:BoundField>
<asp:BoundField DataField="todate" HeaderText="پایان"
DataFormatString="{0:yyyy/MM/dd}" >
<HeaderStyle Width="70px" />
</asp:BoundField>
<asp:BoundField DataField="reg_deadline" HeaderText="پایان ثبت نام"
DataFormatString="{0:yyyy/MM/dd}" >
<HeaderStyle Width="80px" />
</asp:BoundField>
<asp:BoundField DataField="title" HeaderText="عنوان" >
<HeaderStyle Width="75px" />
</asp:BoundField>
<asp:BoundField DataField="pay" HeaderText="شهریه" >
<HeaderStyle Width="65px" />
</asp:BoundField>
<asp:BoundField DataField="capacity" HeaderText="ظرفیت" >
<HeaderStyle Width="45px" />
</asp:BoundField>

<asp:TemplateField HeaderText="انتخاب">
<ItemTemplate>
<asp:CheckBox ID="chkSelect" runat="server" />
</ItemTemplate>
</asp:TemplateField>

</Columns>
</asp:GridView>

چرا هیچ وقت chk یا cb مقدار نمی گیره ؟
کسی می تونه کمک کنه ؟
کلا میخوام وقتی یک ردیف تیک خورد و کاربر کد اون ردیف رو در textbox مربوطه نوشت و دکمه انتخاب زد اون ردیف به لیست خودش اضافه بشه.
قبلا به خاطر پاسخ هاتون از شماتشکر می کنم.

fardin_esmi
پنج شنبه 09 خرداد 1392, 16:34 عصر
مشکلم حل شد .
فقط روی گریدویو این تغییر رو دادم:
EnableViewState=false
اینم نوشتم شاید به درد کسی بخوره و دو روز دنبال حل این مشکل نباشه . این پست من از دو روز پیش تا الان 70 بازدید داشت و بدون پاسخ بود.