日期:2014-05-18  浏览次数:20476 次

取Repeater中绑定的值
我在repeater里面绑定了一个RadioButton和其他几项数据,格式大概为这样:
<asp:repeater   id=“rep”   runat= "server ">
<itemTemplate>
<TD   >   <asp:RadioButton   ID= "RadioButton1 "   runat= "server "     AutoPostBack= "true "   GroupName= "1 "   OnCheckedChanged= "changed "/> </TD>
          <TD   > <%#   DataBinder.Eval(Container.DataItem, "geneStep ")   %> </TD>
          <TD   > <%#   DataBinder.Eval(Container.DataItem, "ProfessionKind ")   %> </TD>
          <TD   > <%#   DataBinder.Eval(Container.DataItem, "air ")   %> </TD>
          <TD   > <%#   DataBinder.Eval(Container.DataItem, "water ")   %〉 </TD>
          <TD   > <%#   DataBinder.Eval(Container.DataItem, "product ")   %> </TD>
</itemTemplate>
</asp:repeater>
现在我想当哪一行的RadioButton点中时,分别取出行“geneStep”   “ProfessionKind”   “air”   等的值,该怎么做啊?这几行是直接绑定的,没有用Label等控件
还有就是,取值的事件是在:RadioButton_CheckChanged()事件里面。
请大家帮忙,谢谢。

------解决方案--------------------
貌似不行...

楼上能不能说清楚点,如何找出选中行?如何取出数据?
------解决方案--------------------
我这有个datagrid里面通过checkbox的代码。你改下就可以了。原理一样的!
Dim i As Integer
For i = 0 To MyDataGrid.Items.Count - 1
Dim chkbox As CheckBox = CType(MyDataGrid.Items(i).FindControl( "checkbox1 "), CheckBox)
If chkbox.Checked = True Then
Dim comid As Integer
comid = MyDataGrid.Items(i).Cells(2).Text ‘这里是取得的值
Dim path As String = "pmcmodify.aspx?comid= " & comid
Response.Write( " <script> window.open( ' " + path + " ', '_blank '); </script> ")
End If
Next
------解决方案--------------------
把内容绑定在控件上面,再遍Reapter中的所有行,其中采用FindControl的方法取出需要的值
取值参考
protected void showInfo_Click(object sender, EventArgs e)
{
for(int i=0;i <myRepeater.Items.Count;i++)
{
CheckBox myCheck=(CheckBox)myReapeater.Items[i].FindControl( "RadioButton1 ");
if(myCheck....){}
}
}
个人认为这样会简单很多,而且效果也一致
------解决方案--------------------
呵呵,帮楼主顶。
我也想知道怎么获取!
------解决方案--------------------
我这里的radioButton的id为 rb
Repeter为rpt
首先在 rpt的创建事件中为radioButton绑定事件
private void rpt_ItemCreated(object sender, System.Web.UI.WebControls.RepeaterItemEventArgs e)
{
RadioButton rb=(RadioButton)e.Item.FindControl( "rb ");
rb.CheckedChanged+=new EventHandler(rb_CheckedChanged);
}
然后在checkedChanged事件取所需要的数据
protected void rb_CheckedChanged(object sender, EventArgs e)
{
for(int i=0;i <rpt.Items.Count;i++)
{
RadioButton rb=(CheckBox)rpt.Items[i].FindControl( "rb ");
if(rb.Checked)
{
//在这里取值 但是取服务器控件的值 才了做
}
}
}
------解决方案--------------------