如何使用 ASP.NET 文字动态生成复选框列表
How to generate Checkboxlist dynamically using ASP.NET Literal
我正在尝试使用此代码动态生成复选框列表:
string IDToEdit = Request.QueryString["id"].ToString();
List<DAL.EF.Dental_Price_Lists> lstOfCategDental = BAL.Helpers.Prices.GetDentalCategories();
string HTMLTag = "";
string HTMLTag2 = "";
int count = 1;
foreach (var x in lstOfCategDental)
{
HTMLTag += string.Format("<a href='#tab{0}'>{1}</a>", count, x.Category);
List<DAL.EF.Dental_Price_Lists> priceList = BAL.Helpers.Prices.GetDentalPrices(x.Category);
HTMLTag2 += string.Format("<div id='tab{0}' class='tab'>", count);
HTMLTag2 += string.Format(" <asp:CheckBoxList ID='chkListDental{0}' runat='server'>", count);
foreach (var price in priceList)
{
HTMLTag2 += string.Format(" <asp:ListItem Value='{0}' price='{1}' Text='{2}'></asp:ListItem>", price.ID.ToString(), price.Price.ToString(), price.Type);
}
HTMLTag2 += " </asp:CheckBoxList>";
HTMLTag2 += " </div>";
count++;
}
ltrCategories.Text = HTMLTag;
ltrChkListDental.Text = HTMLTag2;
}
但它没有正常工作 "explained in the below image",我想那是因为 ASP.NET 标签而不是 HTML 标签,但我不确定...所以,你能帮我解决这个问题吗?
正如您在下图中看到的,asp.net 标签没有转换为 html 标签?
你做不到。但是您可以实例化一个新控件,然后将其附加到页面控件 属性:
foreach (var x in lstOfCategDental) {
List<DAL.EF.Dental_Price_Lists> priceList = BAL.Helpers.Prices.GetDentalPrices(x.Category);
var checkboxList = new CheckBoxList();
checkboxList.ID = string.Format("chkListDental{0}", count);
foreach (var price in priceList) {
var listItem = new ListItem(price.Type);
listItem.Value = price.ID.ToString();
checkboxList.Attributes.Add("price", price.Price.ToString());
checkboxList.Items.Add(listItem);
}
count++;
Page.Controls.Add(checkboxList);
}
或者每个控件都使用控件的RenderControl方法,但是不推荐。
StringBuilder sb = new StringBuilder();
StringWriter stWriter = new StringWriter(sb);
HtmlTextWriter htmlWriter = new HtmlTextWriter(stWriter);
ControlToRender.RenderControl(htmlWriter);
.
.
.
foreach (var x in lstOfCategDental) {
List<DAL.EF.Dental_Price_Lists> priceList = BAL.Helpers.Prices.GetDentalPrices(x.Category);
var checkboxList = new CheckBoxList();
checkboxList.ID = string.Format("chkListDental{0}", count);
foreach (var price in priceList) {
var listItem = new ListItem(price.Type);
listItem.Value = price.ID.ToString();
checkboxList.Attributes.Add("price", price.Price.ToString());
checkboxList.Items.Add(listItem);
}
count++;
checkboxList.RenderControl(htmlWriter);
}
ltrChkListDental.Text = sb.ToString();
我通过动态创建 div 然后将复选框列表添加到那个 div 来解决它。
string IDToEdit = Request.QueryString["id"].ToString();
List<DAL.EF.Dental_Price_Lists> lstOfCategDental = BAL.Helpers.Prices.GetDentalCategories();
string HTMLTag = "";
int count = 1;
foreach (var x in lstOfCategDental)
{
var checkboxList = new CheckBoxList();
List<DAL.EF.Dental_Price_Lists> priceList = BAL.Helpers.Prices.GetDentalPrices(x.Category);
HTMLTag += string.Format("<a href='#tab{0}'>{1}</a>", count, x.Category);
checkboxList.ID = string.Format("chkListDental{0}", count);
HtmlGenericControl divControl = new HtmlGenericControl("div");
// Set the properties of the new HtmlGenericControl control.
divControl.ID = "tab" + count;
divControl.Attributes.Add("class", "tab");
// Add the new HtmlGenericControl to the Controls collection of the
// PlaceHolder control.
divPlaceHolder.Controls.Add(divControl);
foreach (var price in priceList)
{
var listItem = new ListItem(price.Type);
listItem.Value = price.ID.ToString();
checkboxList.Attributes.Add("price", price.Price.ToString());
checkboxList.Items.Add(listItem);
}
count++;
divControl.Controls.Add(checkboxList);
}
ltrCategories.Text = HTMLTag;
我正在尝试使用此代码动态生成复选框列表:
string IDToEdit = Request.QueryString["id"].ToString();
List<DAL.EF.Dental_Price_Lists> lstOfCategDental = BAL.Helpers.Prices.GetDentalCategories();
string HTMLTag = "";
string HTMLTag2 = "";
int count = 1;
foreach (var x in lstOfCategDental)
{
HTMLTag += string.Format("<a href='#tab{0}'>{1}</a>", count, x.Category);
List<DAL.EF.Dental_Price_Lists> priceList = BAL.Helpers.Prices.GetDentalPrices(x.Category);
HTMLTag2 += string.Format("<div id='tab{0}' class='tab'>", count);
HTMLTag2 += string.Format(" <asp:CheckBoxList ID='chkListDental{0}' runat='server'>", count);
foreach (var price in priceList)
{
HTMLTag2 += string.Format(" <asp:ListItem Value='{0}' price='{1}' Text='{2}'></asp:ListItem>", price.ID.ToString(), price.Price.ToString(), price.Type);
}
HTMLTag2 += " </asp:CheckBoxList>";
HTMLTag2 += " </div>";
count++;
}
ltrCategories.Text = HTMLTag;
ltrChkListDental.Text = HTMLTag2;
}
但它没有正常工作 "explained in the below image",我想那是因为 ASP.NET 标签而不是 HTML 标签,但我不确定...所以,你能帮我解决这个问题吗?
正如您在下图中看到的,asp.net 标签没有转换为 html 标签?
你做不到。但是您可以实例化一个新控件,然后将其附加到页面控件 属性:
foreach (var x in lstOfCategDental) {
List<DAL.EF.Dental_Price_Lists> priceList = BAL.Helpers.Prices.GetDentalPrices(x.Category);
var checkboxList = new CheckBoxList();
checkboxList.ID = string.Format("chkListDental{0}", count);
foreach (var price in priceList) {
var listItem = new ListItem(price.Type);
listItem.Value = price.ID.ToString();
checkboxList.Attributes.Add("price", price.Price.ToString());
checkboxList.Items.Add(listItem);
}
count++;
Page.Controls.Add(checkboxList);
}
或者每个控件都使用控件的RenderControl方法,但是不推荐。
StringBuilder sb = new StringBuilder();
StringWriter stWriter = new StringWriter(sb);
HtmlTextWriter htmlWriter = new HtmlTextWriter(stWriter);
ControlToRender.RenderControl(htmlWriter);
.
.
.
foreach (var x in lstOfCategDental) {
List<DAL.EF.Dental_Price_Lists> priceList = BAL.Helpers.Prices.GetDentalPrices(x.Category);
var checkboxList = new CheckBoxList();
checkboxList.ID = string.Format("chkListDental{0}", count);
foreach (var price in priceList) {
var listItem = new ListItem(price.Type);
listItem.Value = price.ID.ToString();
checkboxList.Attributes.Add("price", price.Price.ToString());
checkboxList.Items.Add(listItem);
}
count++;
checkboxList.RenderControl(htmlWriter);
}
ltrChkListDental.Text = sb.ToString();
我通过动态创建 div 然后将复选框列表添加到那个 div 来解决它。
string IDToEdit = Request.QueryString["id"].ToString();
List<DAL.EF.Dental_Price_Lists> lstOfCategDental = BAL.Helpers.Prices.GetDentalCategories();
string HTMLTag = "";
int count = 1;
foreach (var x in lstOfCategDental)
{
var checkboxList = new CheckBoxList();
List<DAL.EF.Dental_Price_Lists> priceList = BAL.Helpers.Prices.GetDentalPrices(x.Category);
HTMLTag += string.Format("<a href='#tab{0}'>{1}</a>", count, x.Category);
checkboxList.ID = string.Format("chkListDental{0}", count);
HtmlGenericControl divControl = new HtmlGenericControl("div");
// Set the properties of the new HtmlGenericControl control.
divControl.ID = "tab" + count;
divControl.Attributes.Add("class", "tab");
// Add the new HtmlGenericControl to the Controls collection of the
// PlaceHolder control.
divPlaceHolder.Controls.Add(divControl);
foreach (var price in priceList)
{
var listItem = new ListItem(price.Type);
listItem.Value = price.ID.ToString();
checkboxList.Attributes.Add("price", price.Price.ToString());
checkboxList.Items.Add(listItem);
}
count++;
divControl.Controls.Add(checkboxList);
}
ltrCategories.Text = HTMLTag;