如何使用C#

时间:2015-08-20 06:32:48

标签: c# html checkbox

我遇到了一些问题,让我花一些时间进行测试。

我有一个ListView和一个checkbox以及一个外面的按钮。

当我click button时,会显示行Tr ID的行checkbox checked

但始终显示ctrl2而不是ID。

这是我的代码:



<asp:ListView ID="ListView1" runat="server">
                        <LayoutTemplate>
                            <table cellspacing="0" border="0">
                                <tr>
                                    <th scope="col" width="125">Man
                                    </th>
                                    <th scope="col" width="50">Type
                                    </th>
                                    <th scope="col" width="400">Reason
                                    </th>
                                    <th scope="col" width="125">date
                                    </th>
                                    <th scope="col" width="100">cheack
                                    </th>
                                    <th scope="col" width="125">remark
                                    </th>
                                </tr>
                                <tr runat="server" id="itemPlaceholder" />
                            </table>
                        </LayoutTemplate>
                        <ItemTemplate>
                            <tr id="<%#Eval("ID").ToString()%>" runat="server">
                                <td scope="col" >
                                    <%#Eval("UserID").ToString()%>
                                </td>
                                <td scope="col">
                                    <%#Eval("Purpose").ToString() %>
                                </td>
                                <td scope="col">
                                    <%#Eval("Reason").ToString() %>
                                </td>
                                <td scope="col">
                                    <%#dateSession(Convert.ToDateTime( Eval("startTime"))) %>
                                </td>
                                <td scope="col">
                                    <asp:CheckBox ID="CheckBox1" runat="server" Checked="True" />
                                </td>
                                <td scope="col">
                                    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
                                </td>
                            </tr>
                        </ItemTemplate>
                    </asp:ListView>
&#13;
&#13;
&#13;

这是我背后的代码

protected void Btn_save_Click(object sender, EventArgs e)
{
    foreach (ListViewItem row in this.ListView1.Items)
    {
        CheckBox stylistcheck = (CheckBox)row.FindControl("CheckBox1");

        if (stylistcheck.Checked == true)
        {
            Response.Write(row.ID);
            // Always get wrong ID , like 'ctrl3' not real rows Tr ID
        }
    }
}

4 个答案:

答案 0 :(得分:1)

执行此操作 size_t siz = some_size(); void* p = malloc(siz); if (!p) { perror("malloc"); exit(EXIT_FAILURE); }; 会抛出错误,AFAIR。如果您的目标是为代表您数据的每一行获取<tr id="<%#Eval("ID").ToString()%>" runat="server">,那么您只需添加一个文字控件,隐藏它,并在代码隐藏中获得它的价值。类似的东西:

ID

在代码隐藏中,<tr runat="server"> <td scope="col" > <%# Eval("UserID").ToString()%> <asp:Literal ID="idLiteral" runat="server" Text='<%# Eval("ID").ToString()%>' Visible="false" ></asp:Literal> </td> ...rest of your code goes here... </tr> 内部执行if (stylistcheck.Checked == true),如此:

Response.Write(((Literal)row.FindControl("idLiteral")).Text);

答案 1 :(得分:0)

CheckBox1.Checked = true;

它可能对你有帮助。

OR

CheckBox chkDelete = (CheckBox)item.FindControl("CheckBox1");
if(chkDelete.Checked)
{
    string yourID = item.DataItem["id"].ToString();
    itemsToDelete.Add(yourID);
}

OR

 if (CheckBox1.Checked==true)
    {

    }

这也可能适合你。

答案 2 :(得分:0)

 yourListView.DataSource = GetCourses();
 yourListView.DataBind();

 var checkBox = yourListView.Controls.Cast<Control>).First().FindControl("yourID")

if (item.ItemType == ListViewItemType.DataItem){

CheckBox final = (CheckBox)item.FindControl("yourID");
if (final.Checked)  {
}

答案 3 :(得分:0)

只是想知道你确定可以运行这段代码吗?

<tr id="<%#Eval("ID").ToString()%>" runat="server"> 

我尝试了你的代码并运行它会在这一行遇到错误...
因为“你会得到错误服务器标签没有很好地形成。
如果我使用这个'错误将是: 控件的ID属性只能使用标记中的ID属性和简单值来设置。

我编写的代码将检索ID可能对您有帮助......

的.aspx

<asp:ListView ID="ListView1" runat="server" >
        <LayoutTemplate>
            <table id="tbllol" runat="server" cellspacing="0" border="0">
                <tr>
                    <th scope="col" width="100">cheack
                    </th>
                    <th scope="col" width="125">remark
                    </th>
                </tr>
                <tr runat="server" id="itemPlaceholder" />
            </table>
        </LayoutTemplate>
        <ItemTemplate>
            <tr>
                <td scope="col">
                    <asp:CheckBox ID="chkBox" runat="server" Checked="true" />
                    <asp:Label ID="lblID" runat="server" Text='<%# Eval("ID") %>' Visible="false"></asp:Label>
                </td>
                <td scope="col">
                    <asp:TextBox ID="txtRemarks" runat="server"></asp:TextBox>
                </td>
            </tr>
        </ItemTemplate>
    </asp:ListView>

    <asp:Button ID="btn" runat="server" Text="Save" OnClick="btn_Click" />

.aspx.cs

protected void Page_Load(object sender, EventArgs e)
{
    // Check
    if (!IsPostBack)
    {
        // Variable
        DataTable dt = new DataTable();
        dt.Columns.Add("ID");

        // Loop & Add ID
        for (int i = 0; i < 10; i++) dt.Rows.Add("myIDIi" + i);

        ListView1.DataSource = dt;
        ListView1.DataBind();



    }
}

protected void btn_Click(object sender, EventArgs e)
{
    // Variable
    string value = string.Empty;

    // Loop
    foreach (ListViewItem row in ListView1.Items)
    {
        // Find Control
        CheckBox chkbox = row.FindControl("chkBox") as CheckBox;
        Label lblID = row.FindControl("lblID") as Label;

        // Check & Check Then Set to Value
        if (chkbox != null && chkbox.Checked)
            if (lblID != null) value += lblID.Text.Trim() + "<br />";
    }

    Response.Write(value);
}