我有一个asp.net页面。我正在从服务器(一个asp.net页面)生成一个RadioButton列表,并使用javascript和ajax将它加载到DIV。现在我想在我的codebhind文件中读取RadioButton列表。但VS Intelisense没有显示控件名称。谁能告诉我怎么读它?
我在服务器端生成单选按钮列表的代码
System.IO.StringWriter swriter=new System.IO.StringWriter();
HtmlTextWriter textWriter = new HtmlTextWriter(swriter);
string strPriceOutput="";
RadioButtonList iRadioBtnListPrices = new RadioButtonList();
iRadioBtnListPrices.RepeatDirection = RepeatDirection.Vertical;
iRadioBtnListPrices.CssClass = "priceList";
string strRadios = "";
if ((this.Vendor != null))
{
foreach (VendorQuoteType vendorQuoteType in Vendor.VendorQuoteTypeCollection)
{
iRadioBtnListPrices.Items.Add(new ListItem(" $ " + totalPrice.ToString()" ,vendorID.ToString()));
}
}
iRadioBtnListPrices.RenderControl(textWriter);
strPriceOutput = swriter.ToString();
我正在使用ajax在我的javascript中阅读它并将其指定为div的内部HTML。
如何在Codebehind中阅读此RadioButton列表?
答案 0 :(得分:1)
您可能需要找到.FindControl()
并将其投放到RadioButtonList
。如果你将它添加到Panel
或其他控件的内容中,缩小你需要搜索它的位置(甚至可能<div id="myDiv" runat="server">
就足够了,我不知道...)你然后可以使用这个:
RadioButtonList theList =
(RadioButtonList)thePanel.FindControl("theIdOfTheRadioButtonList");
theList.WillNowGiveYouIntellisense();
答案 1 :(得分:1)
改善代码的几种方法:
因此IntelliSense将找到控件名称
或
将动态创建的RadioButtonList添加为现有控件的子级
设置RadioButtonList的ID属性
使用具有所选ID的FindControl
在这些解决方案中不需要调用RenderControl。
答案 2 :(得分:0)
首先,为什么使用这种奇怪的方法来渲染单选按钮列表?我想有更好的方法来实现你所需要的。举例来说,看一下RadioButtonList数据绑定机制:here。我会将radiobutton列表添加到页面中,并使用数据绑定机制或在循环中执行此操作。然后我会根据某些条件隐藏/显示(myRadioButtonList.Visible = false / true)列表。
你可能在代码隐藏上看不到你的radiobutton列表的原因是你在运行时动态创建它。 intellisense将向您显示您在aspx / ascx代码上放置的元素,并且设计器已在设计器文件中创建了适用于您的页面/用户控件的变量。 它应该如何能够检索它?