簡體   English   中英

帶有生成的HTML代碼的Web應用程序包含不顯示消息的復選框。 (Asp.net,C#)

[英]Web application with generated HTML code consist of checkbox not display message. (Asp.net, C#)

我發現奇怪的是,當我選中某些復選框(生成的HTML代碼)時,子功能沒有警告(或顯示消息)正在選中哪個復選框。

我想念什么嗎?

在WebForm.aspx內部

 <script type="text/javascript">

 function sub()
 {

    for (i=0; i<arrChecks.length; i++)
    {
        var attribute = arrChecks[i].getAttribute("xid")
        if (attribute == elementName)
        {
            // if the current state is checked, unchecked and vice-versa
            if (arrChecks[i].checked)
            {
                arrChecks[i].checked = false;
            } else {
                arrChecks[i].checked = true;
                alert("Checked!");
            }

        } else {
            arrChecks[i].checked = false;
        }
    }

 }


 </script>

在WebForm.cs內部

    protected void ButtonCheckDate_Click(object sender, EventArgs e)
    {
        SqlConnection conn = ConnectDB("Data Source=JACKSERVERA;Initial Catalog=tablea;User Id=tableuser;Password=tablepassword");


        if ((TextBox2.Text != null) && (TextBox2.Text != ""))
        {
            try
            {
                String res = "";

                SqlCommand command = conn.CreateCommand();
                SqlDataReader reader;
                command.CommandType = System.Data.CommandType.Text;
                command.CommandText = "SELECT * from overviewtable where [dated] = @PDATED";
                command.Parameters.AddWithValue("@PDATED", TextBox2.Text);
                command.Connection = conn;
                sqlstmt.Text = command.CommandText;

                conn.Open();
                reader = command.ExecuteReader();

                if (reader.HasRows)
                {
                    res = res + "<form name=\"input\" runat=\"server\"><table border=1>";
                    while (reader.Read())
                    {
                        res = res + "<tr>";


                        string thetime = (string)reader["time"];
                        string thevenue = (string)reader["venue"];
                        int numfreeseat = (int)reader["freeseat"];

                        int occupiedseat = 0;

                        SqlCommand bkcommand = conn.CreateCommand();
                        SqlDataReader bookinglist;
                        bkcommand.CommandType = System.Data.CommandType.Text;
                        bkcommand.CommandText = "SELECT count(*) from venuea where [dated] = @PDATED";
                        bkcommand.Parameters.AddWithValue("@PTIME", thetime);
                        bkcommand.Connection = conn;
                        sqlstmt.Text = bkcommand.CommandText;
                        bookinglist = bkcommand.ExecuteReader();

                        while (bookinglist.Read())
                        {
                            if (bookinglist.HasRows)
                            {
                                occupiedseat = (int)bookinglist.GetValue(0);
                            }
                        }


                        int leftnumofseat = numfreeseat - occupiedseat;

                        string color = "";
                        Boolean fullyoccupied = false;

                        if (leftnumofseat > 0)
                        {
                            if (leftnumofseat == numfreeseat)
                            {
                                // white
                                color = "#FFFFFF";
                            }
                            else
                            {
                                // light gray - partial occupied
                                color = "#B8B8B8";
                            }
                        }
                        else
                        {
                            // dark gray - fully occupied
                            color = "#505050";
                            fullyoccupied = true;
                        }


                        res = res + "<td bgcolor=\"" + color + "\">";
                        res = res + "Available: " + leftnumofseat + "/" + numfreeseat + "";
                        res = res + "</td>";

                        string checkboxval = TextBox2.Text + "_" + thetime + "_" + thevenue;

                        res = res + "<td>";
                        if (fullyoccupied == false)
                        {
                            res = res + "<input type=\"checkbox\" name=\"xid\" value=\"" + checkboxval + "\" runat=\"server\" />";
                        }
                        else
                        {
                            res = res + "FULL";
                        }
                        res = res + "</td>";

                        res = res + "</tr>";
                    }
                    res = res + "</table><input type=\"submit\" value=\"Submit\" OnClick=\"sub\" runat=\"server\"></form>";
                }
                LabelDateSelection.Text = res;

                conn.Close();



            }
            catch (Exception err)
            {
                errormsg.Text = err.Message;
            }
        }
        else
        {
            LabelDateSelection.Text = "Enter Date!";
        }



    }

從您的代碼中刪除此部分,並查看它是否可以運行runat=\\"server\\"

我不確定是否可以像嘗試一樣創建和ASP.net服務器控件,並且在服務器渲染runat=\\"server\\"時將輸出發送到客戶端。 檢查您的HTML代碼並查看其外觀。

動態創建HTML控件或創建簡單的HTML控件(如果可以的話)。

看這個例子,如何實際地創建控件

http://msdn.microsoft.com/zh-CN/library/kyt0fzt1%28v=vs.100%29.aspx

除了KnowledgeSeeker提出的要點外,您不能以該樣式創建ASP控件。

您可以通過使用FindControl方法定位元素,然后從中獲取值或在C#添加代碼中獲取已創建復選框的值,類似於:

for (int i = 0; i < 5; i++)

{

CheckBox chk = new CheckBox();

chk.ID = Convert.ToString(i);

chk.Text = Convert.ToString(i);

form1.Controls.Add(chk);

}

在這種情況下,您要從0循環到5,並創建復選框並將這些控件添加到表單中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM