PDA

View Full Version : radiobutton در datalist



b.mahsa
پنج شنبه 05 اسفند 1389, 09:07 صبح
سلام
ببخشید اگه سوالم تکراریه
جستجو کردم ولی به جواب نرسیدم.
یه datalist دارم (در runtime سطر هاش از اطلاعات موجود در database ساخته میشه - ID های کنترل radiobutton ثابت نیست)، تو ستون اولش یه radiobutton هست میخوام که فقط یکی از radiobutton ها انتخاب بشه.
groupname دادم بهشون ولی عمل نمیکنه.
ممنون میشم راهنماییم بفرمائید.

b.mahsa
شنبه 07 اسفند 1389, 09:40 صبح
به این جواب رسیدم





<asp:RadioButton ID="rb1" runat="server" GroupName="gp1" Checked='<%#
SetChecked("rb1", Container.DataItem) %>' />
<asp:RadioButton ID="rb2" runat="server" GroupName="gp1" Checked='<%#
SetChecked("rb2", Container.DataItem) %>' />


========a protected function in codebehind page class==========
protected bool SetChecked(string rbid, object obj)
{
DataRowView drv = obj as DataRowView;

if (rbid == "rb1")
{
return ((int)(drv[0]) % 2 == 0);
}

return !((int)(drv[0]) % 2 == 0);

}



ولی این زمانی جواب میده که ID های کنترل ثابت باشه .
کسی راه حلی واسش نداره؟:ناراحت:

b.mahsa
شنبه 07 اسفند 1389, 15:05 عصر
مشکل حل شد.
این راه حلشه، میذارمش شاید به درد کسی بخوره.


<script type="text/javascript">
function SetSingleRadioButton(nameregex, current) {
re = new RegExp(nameregex);
for (i = 0; i < document.forms[0].elements.length; i++) {
elm = document.forms[0].elements[i]
if (elm.type == 'radio') {
if (re.test(elm.name)) {
elm.checked = false;
}
}
}
current.checked = true;
}
</script>

protected void List_ItemDataBound(object sender, DataListItemEventArgs e)
{
if (e.Item.ItemType != ListItemType.Item && e.Item.ItemType != ListItemType.AlternatingItem)
return;
RadioButton rdo = (RadioButton)e.Item.FindControl("rbtn1");
string script = "SetSingleRadioButton('List',this)";
rdo.Attributes.Add("onclick", script);
}