C# 再次单击按钮绑定HTML表

C# 再次单击按钮绑定HTML表,c#,asp.net,postback,C#,Asp.net,Postback,我的代码中有HTML表,它将绑定pageload上的数据 现在我有一个按钮可以将数据插入数据库。我的问题是,当我点击按钮插入数据时,我的页面会被发回。我的html表格数据将只显示旧数据,而不是我添加的新数据。因为html表格在pageload中首先绑定,在单词之后,我的控件将转到button_click事件 我试图将ispostback放在页面加载上,但第一次页面加载时,html表并没有显示任何数据 我怎样才能解决这个问题 protected void Page_Load(object se

我的代码中有HTML表,它将绑定pageload上的数据

现在我有一个按钮可以将数据插入数据库。我的问题是,当我点击按钮插入数据时,我的页面会被发回。我的html表格数据将只显示旧数据,而不是我添加的新数据。因为html表格在pageload中首先绑定,在单词之后,我的控件将转到button_click事件

我试图将ispostback放在页面加载上,但第一次页面加载时,html表并没有显示任何数据

我怎样才能解决这个问题

  protected void Page_Load(object sender, EventArgs e)
        {
            using (SqlCommand cmd = new SqlCommand())
            {
                cmd.Connection = conn;
                cmd.CommandType = CommandType.Text;
                cmd.CommandText = "Select * from Ticket";
                conn.Open();

                SqlDataReader dr = cmd.ExecuteReader();

                // //Building an HTML string.
                StringBuilder html = new StringBuilder();

                //Table start.

                html.Append("<table id='tbldata' style='table-layout:fixed;' border='0'>");
                html.Append("<THEAD>");
                html.Append("<TR>");
                html.Append("<TH>Ticket</TH>");
                html.Append("<TH>Priority</TH>");
                html.Append("<TH>Status<div class='fildownarrow'></div></TH>");
                html.Append("<TH>Practice Name<div class='fildownarrow'></div></TH>");
                html.Append("<TH>Patient Name</TH>");
                html.Append("<TH>Assigned</TH>");
                html.Append("<TH>Subject</TH>");
                html.Append("<TH style='width:100px;><a href='#'><div class='filtericon'></div></a></TH>");
                html.Append("</TR>");
                html.Append("</THEAD>");

                if (dr.HasRows)
                {
                    while (dr.Read())
                    {
                        html.Append("<tbody>");
                        html.Append("<tr>");
                        html.Append("<td>" + dr["Ticket_no"] + "</td>");
                        html.Append("<td>" + dr["Priority"] + "</td>");
                        html.Append("<td>" + dr["Status"] + "</td>");
                        html.Append("<td>" + dr["Practice_Name"] + "</td>");
                        html.Append("<td>" + dr["Patient_Name"] + "</td>");
                        html.Append("<td>" + dr["Assign_User_Name"] + "</td>");
                        html.Append("<td>" + dr["Msg_Subject"] + "</td>");
                        html.Append("</tr>");
                        html.Append("</tbody>");
                    }
                }

                //Table end.
                html.Append("</table>");

                //Append the HTML string to Placeholder.
                PlaceHolder1.Controls.Add(new Literal { Text = html.ToString() });

                dr.Close();
                dr.Dispose();
            }
受保护的无效页面加载(对象发送方,事件参数e)
{
使用(SqlCommand cmd=new SqlCommand())
{
cmd.Connection=conn;
cmd.CommandType=CommandType.Text;
cmd.CommandText=“从票据中选择*”;
conn.Open();
SqlDataReader dr=cmd.ExecuteReader();
////生成HTML字符串。
StringBuilder html=新的StringBuilder();
//桌子开始。
html.Append(“”);
html.Append(“”);
html.Append(“”);
附加(“票证”);
附加(“优先级”);
附加(“状态”);
附加(“机构名称”);
html.Append(“患者姓名”);
html.Append(“Assigned”);
附加(“主题”);

html.Append(“如果在检查IsPostBack属性时页面加载时得到空表,我认为您正在检查它的值是否为true。因此表将仅在回发时加载。您应该检查IsPostBack属性值是否为false,以仅显示页面的第一次加载内容

protected void Page_Load(object sender, EventArgs e)
{
    if(!Page.IsPostBack)
    {
        using (SqlCommand cmd = new SqlCommand())
        {
            cmd.Connection = conn;
            cmd.CommandType = CommandType.Text;
            cmd.CommandText = "Select * from Ticket";
            conn.Open();

            SqlDataReader dr = cmd.ExecuteReader();

            // //Building an HTML string.
            StringBuilder html = new StringBuilder();

            //Table start.

            html.Append("<table id='tbldata' style='table-layout:fixed;' border='0'>");
            html.Append("<THEAD>");
            html.Append("<TR>");
            html.Append("<TH>Ticket</TH>");
            html.Append("<TH>Priority</TH>");
            html.Append("<TH>Status<div class='fildownarrow'></div></TH>");
            html.Append("<TH>Practice Name<div class='fildownarrow'></div></TH>");
            html.Append("<TH>Patient Name</TH>");
            html.Append("<TH>Assigned</TH>");
            html.Append("<TH>Subject</TH>");
            html.Append("<TH style='width:100px;><a href='#'><div class='filtericon'></div></a></TH>");
            html.Append("</TR>");
            html.Append("</THEAD>");

            if (dr.HasRows)
            {
                while (dr.Read())
                {
                    html.Append("<tbody>");
                    html.Append("<tr>");
                    html.Append("<td>" + dr["Ticket_no"] + "</td>");
                    html.Append("<td>" + dr["Priority"] + "</td>");
                    html.Append("<td>" + dr["Status"] + "</td>");
                    html.Append("<td>" + dr["Practice_Name"] + "</td>");
                    html.Append("<td>" + dr["Patient_Name"] + "</td>");
                    html.Append("<td>" + dr["Assign_User_Name"] + "</td>");
                    html.Append("<td>" + dr["Msg_Subject"] + "</td>");
                    html.Append("</tr>");
                    html.Append("</tbody>");
                }
            }

            //Table end.
            html.Append("</table>");

            //Append the HTML string to Placeholder.
            PlaceHolder1.Controls.Add(new Literal { Text = html.ToString() });

            dr.Close();
            dr.Dispose();
        }
    }
}
受保护的无效页面加载(对象发送方,事件参数e)
{
如果(!Page.IsPostBack)
{
使用(SqlCommand cmd=new SqlCommand())
{
cmd.Connection=conn;
cmd.CommandType=CommandType.Text;
cmd.CommandText=“从票据中选择*”;
conn.Open();
SqlDataReader dr=cmd.ExecuteReader();
////生成HTML字符串。
StringBuilder html=新的StringBuilder();
//桌子开始。
html.Append(“”);
html.Append(“”);
html.Append(“”);
附加(“票证”);
附加(“优先级”);
附加(“状态”);
附加(“机构名称”);
html.Append(“患者姓名”);
html.Append(“Assigned”);
附加(“主题”);

html.Append(“您应该以以下方式组织代码:

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        LoadData();
    }
}

protected void Button1_Click(object sender, EventArgs e)
{
    //Write data to database
    LoadData();
}

private void LoadData()
{
    using (SqlCommand cmd = new SqlCommand())
    {
        //Here goes your sql code that reads the database
    }
}

当然,更好的解决方案是使用像GridView这样的控件并直接将数据绑定到它。

不要这样做,将数据检索到列表中并绑定到listview控件。这将为您节省大量的麻烦。使用SqlDataAdapter检索数据并使用Repeater、DataList或GridView显示数据这不起作用。他的表是created在这里,这意味着它不会在回发中得到更新。@Banana哦,你是对的。似乎我误解了这个问题。