Asp.net如何呈现HTML输入单选回发

本文关键字:输入 单选回 HTML 何呈现 net Asp | 更新日期: 2023-09-27 18:03:10

我使用下面的代码来动态地创建一个网页的单选按钮,因为每组数据都是通过迭代从数据库中检索到的。效果很好。唯一的问题是我需要这些PostBack,所以进一步的数据可以根据哪个单选按钮被点击检索。我尝试用RadioButton控件这样做,但这些不会像<span>技术那样在表单元格内定位,并且它们不会通过<span>创建。

int count = 0;                
            if (dataReader.HasRows)
            {                    
                testLabel1.Text = "dataReader.HasRows: " + dataReader.HasRows;                  
                while (dataReader.Read())
                {
                    count += 1;  
        htmlString.Append("<table border = '1'>");
                    htmlString.Append("<tr>");
                    htmlString.Append("<td>");                            
                    htmlString.Append(dataReader["dateTime"] + "<br />" + "<span><input type='radio' id='rd1'/>SOMTEXT </span>" + dataReader["statistics"]");
        htmlString.Append("</td>");
                    htmlString.Append("</tr>");
                    htmlString.Append("</table>");
                    htmlString.Append("<br />");
                }                
                test_populatePlaceHolder.Controls.Add(new Literal { Text = htmlString.ToString() });
                dataReader.Close();
                dataReader.Dispose();
            }                
        }
    }
}

我尝试在<span><input type='radio' id='rd1'runat='server'/>SOMTEXT </span>中添加runat="server",但它没有创建单选按钮。

Asp.net如何呈现HTML输入单选回发

不知道如何在注释中格式化代码。再一次-如果您在手工制作的html中编写runat="Server",它不会做任何事情,因为此代码不会被编译,您只需手动编写html答案。另一方面,编译声明性语言(asp.net, razor或任何其他)生成javascript,您也可以手动完成,但B.Gates友好地同意为您做:-)

Asp。净设计>

public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            int num = 10;
            if (Page.IsPostBack)
            {
                for (int i = 1; i < this.Repeater1.Controls.Count-1; i++)
                {
                    RadioButton r = (RadioButton)this.Repeater1.Controls[i].Controls[3];
                    if (r.Checked)
                    {
                        num=int.Parse(r.Text.Substring(0, r.Text.IndexOf(' ')));
                        break;
                    }
                }
            }
            this.Repeater1.DataSource = GetAll(num);
            this.Repeater1.DataBind();
        }
        DataTable GetAll(int count)
        {
            Random r = new Random();
            DataTable dt = new DataTable();
            dt.Columns.Add("Text", typeof(string));
            DateTime bs = DateTime.Now;
            for (int i = 0; i < count; i++)
            {
                int value = r.Next(3, 10);
                dt.Rows.Add(value.ToString() + " rows will be shown");
            }
            return dt;
        }
    }

方法GetAll()返回具有计数行的表。在每一行是文本"%i行将被显示"与随机数。表在页面加载事件时绑定到数据中继器。如果是回发,则从中继器行内的单选按钮文本解析行数(您不能从数据表中获取,它是另一个页面,数据表已经在GC中)