ورود

View Full Version : دستیابی به raidobutton در repeater



gheysar14
شنبه 12 اردیبهشت 1388, 12:17 عصر
با سلام
من یه ریپیتر دارم که اطلاعاتی شامل متن سوال و 4 گزینه آنرا از دیتابیس می خونه و نشون میده حالا میخوام با کلیک روی یه باتون گزینه ای که یوزر انتخاب کرده رو از اون بخونم و تو دیتابیس درج کنم . من کد زیر رو نوشتم


<asp:Repeater ID="Repeater1" runat="server">
<HeaderTemplate>
<table border="1" cellpadding="3" cellspacing="0">
<tr bgcolor="gray">
<td> متن سوال</td>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr style="font-family:Tahoma; font-size:small">
<td>
<img src="images/icons/bullete_arrow_blue.gif" />
<%#DataBinder.Eval(Container.DataItem, "QText")%>
</td>
</tr>
<td align="right" style="font-family:Tahoma; font-size:small">
<input type="radio" checked="checked" name="gra" value="A"/>
<%#DataBinder.Eval(Container.DataItem, "A1")%> <br />
<input type="radio" name="gra" value="B"/>
<%#DataBinder.Eval(Container.DataItem, "A2")%> <br />
<input type="radio" name="gra" value="C"/>
<%#DataBinder.Eval(Container.DataItem, "A3")%> <br />
<input type="radio" name="gra" value="D"/>
<%#DataBinder.Eval(Container.DataItem, "A4")%> <br />
</td>
</tr>
</ItemTemplate>
<AlternatingItemTemplate >
<tr bgcolor="#F7F7FB" style="font-family:Tahoma; font-size:small">
<td>
<img src="images/icons/bullete_arrow_blue.gif" />
<%#DataBinder.Eval(Container.DataItem, "QText")%>
</td></tr>
<tr bgcolor="#F7F7FB">
<td align="right" style="font-family:Tahoma; font-size:small">

<input id="Radio5" type="radio" checked="checked" name="grb" value="A"/>
<%#DataBinder.Eval(Container.DataItem, "A1")%> <br />
<input type="radio" name="grb" value="B"/>
<%#DataBinder.Eval(Container.DataItem, "A2")%> <br />
<input type="radio" name="grb" value="C"/>
<%#DataBinder.Eval(Container.DataItem, "A3")%> <br />
<input type="radio" name="grb" value="D"/>
<%#DataBinder.Eval(Container.DataItem, "A4")%> <br />
</td>
</tr>
</AlternatingItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>


تو رویداد کلیک باتون هم اینو نوشتم


For Each rp As RepeaterItem In Repeater1.Items
Dim rb As RadioButton = TryCast(FindControl("grb"), RadioButton)
If rb.Checked Then
' Do Something
End If
Next


ولی هیچی تو rb قرار نمیگیره
لطفاً راهنمایی بفرمایید

nazaninam
شنبه 12 اردیبهشت 1388, 13:04 عصر
دوست گرامی شما چیو findcontrol کردید ؟
باید از rp.findcontrol استفاده کنید

gheysar14
شنبه 12 اردیبهشت 1388, 13:14 عصر
دوست گرامی شما چیو findcontrol کردید ؟
باید از rp.findcontrol استفاده کنید
میخام باتون رادیویی که یوزر انتخاب کرده رو پیدا کنم
rp.findcontrol هم استفاده کردم نشد
به خط rb.checked که میرسه ارور Object reference not set to an instance of an object. رو میده

Chabok
شنبه 12 اردیبهشت 1388, 17:17 عصر
با سلام

متد FindControl فقط روی کنترل های سمت سرور کار میده .
شما میتونید از کنترل RadioButtunList خود asp.net استفاده کنید و آیتم انتخاب شده رو توسط FindControl بدست بیارید .

چون بدین روش یکمی کار سخت خواهد (استفاده از کنترل های ساده HTML)

موفق باشید .

gheysar14
دوشنبه 28 اردیبهشت 1388, 11:42 صبح
اطلاعاتمو اینطوری به دیتالیست بایند کردم


<inputid='OOO<%#Container.DataItem("QuestionID")%>_1'name='S<%#Container.DataItem("QuestionID")%>'type="radio"/><%#Container.DataItem("option1")%><br></br>
<inputid='OOO<%#Container.DataItem("QuestionID")%>_2'name='S<%#Container.DataItem("QuestionID")%>'type="radio"/><%#Container.DataItem("option2")%><br></br>
<inputid='OOO<%#Container.DataItem("QuestionID")%>_3'name='S<%#Container.DataItem("QuestionID")%>'type="radio"/><%#Container.DataItem("option3")%><br></br>
<inputid='OOO<%#Container.DataItem("QuestionID")%>_4'name='S<%#Container.DataItem("QuestionID")%>'type="radio"/><%#Container.DataItem("option4")%><br></br>


قسمتی از کدم به صورته زیره:


ProtectedSub btn_sendAnswer_Click(ByVal sender AsObject, ByVal e As System.EventArgs) Handles btn_sendAnswer.Click
Dim boundLiteralControl As DataBoundLiteralControl = CType(Controls(0), DataBoundLiteralControl)
Dim text AsString = boundLiteralControl.Text
ForEach dl As DataList In DataList1.Items
Dim rb As RadioButton = TryCast(dl.FindControl(text), RadioButton)
If rb.Checked Then
EndIf
Next
Dim cmd As SqlCommand
cmd = New SqlCommand("insert into OCAnswered(PersonID,QuestionID,Selectedoption) values('" + Request.QueryString("PID").ToString + "','" + +"','" + +"')", conn)

حالا برای ثبت گزینه های که یوزر انتخاب کرده در دیتابیس چی جوری باید findcontrol کنم؟ اینی که نوشتم ارور میده :
Unable to cast object of type 'System.Web.UI.ResourceBasedLiteralControl' to type 'System.Web.UI.DataBoundLiteralControl'.

باید تو button_click یکی یکی find کنم یا تو item_command ?