[英]Get the value of HiddenField inside asp.net repeater
当我尝试在直放站内的直放站内使用隐藏字段时
<repeater>
<repeater>
<hiddenfield>
我尝试使用此代码输入值
if (shiftrepeater.Items.Count > 0)
{
for(int shiftcount = 0 ; shiftcount<shiftrepeater.Items.Count ; shiftcount++)
{
Repeater temp = (Repeater)shiftrepeater.Items[shiftcount].FindControl("saturdayrepeater");
for (int count = 0; count < temp.Items.Count; count++)
{
DropDownList ds = (DropDownList)temp.FindControl("userdropdown");
HiddenField hf = (HiddenField)temp.FindControl("hiddenid");
SarcShiftUser user = new SarcShiftUser();
user.id = int.Parse(hf.Value);
user.workzone_id=1;
user.xdate = saturday.Text;
user.table_id = id;
user.shift_id = shiftcount+1;
user.user_id = int.Parse(ds.SelectedValue);
user.level_id= 1;
user.team_id=1;
}
}
}
asp.net代码:
<asp:Repeater ID="saturdayrepeater" runat="server" DataSourceID="saturdayrepeaterds">
<HeaderTemplate>
<table width="100%" cellpadding="0" cellspacing="0">
</HeaderTemplate>
<ItemTemplate>
<tr>
<td>
<asp:HiddenField ID="hiddenid" runat="server" Value='<%#Eval("id") %>' />
<asp:DropDownList ID="userdropdown" CssClass="select" runat="server" DataSourceID="userdropdownds" DataTextField="name" DataValueField="id" AppendDataBoundItems="true">
<asp:ListItem Text="" Value="" Selected="True"></asp:ListItem>
</asp:DropDownList>
</td></tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
一切都很好...但是我得到了这个错误:
你调用的对象是空的。
在这一行:
user.id = int.Parse(hf.Value);
为什么会出现错误?
看起来hf
为null,因为您尝试使用temp.FindControl
而不是temp.Items[count].FindControl
查找HiddenField
。
改变以下
DropDownList ds = (DropDownList)temp.FindControl("userdropdown");
HiddenField hf = (HiddenField)temp.FindControl("hiddenid");
对此
DropDownList ds = (DropDownList)temp.Items[count].FindControl("userdropdown");
HiddenField hf = (HiddenField)temp.Items[count].FindControl("hiddenid");
UPDATE
如果ds.SelectedValue
为空字符串或包含非数字字符,则此行将引发错误
user.user_id = int.Parse(ds.SelectedValue);
您需要将其更改为此
int userID = 0;
if (int.TryParse(ds.SelectedValue, out userID))
{
user.user_id = userID;
}
else
{
// do something when ds.SelectedValue is non numeric
}
尝试这个
foreach (RepeaterItem items in temp.Items)
{
DropDownList ds = (DropDownList)items.FindControl("userdropdown");
HiddenField hf = (HiddenField)items.FindControl("hiddenid");
//your code
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.