【问题标题】:ListView CheckBox issueListView 复选框问题
【发布时间】:2015-02-05 16:04:26
【问题描述】:

我有一个网格格式的ListView,其中包含标题为 (NAME,ID,ADDRESS,GENDER,MOBILENO,PHOTO,BLOCK)。

BLOCK 列的每一行都包含一个 CheckBox

BLOCK列中的复选框被选中时, 该复选框的特定行应更改为只读, 导致该特定行的背景颜色发生变化。

我在 aspx 中的 listview 编码是...

        <AlternatingItemTemplate>
            <tr  class="AITtr">

                <td>
                    <asp:Label ID="NAMELabel" runat="server" Text='<%# Eval("NAME") %>' />
                </td>
                <td>
                    <asp:Label ID="IDLabel" runat="server" Text='<%# Eval("ID") %>' />
                </td>
                <td>
                    <asp:Label ID="ADDRESSLabel" runat="server" Text='<%# Eval("ADDRESS") %>' />
                </td>
                <td>
                    <asp:Label ID="GENDERLabel" runat="server" Text='<%# Eval("GENDER") %>' />
                </td>
                <td>
                    <asp:Label ID="MOBILENOLabel" runat="server" Text='<%# Eval("MOBILENO") %>' />
                </td>
                <td>
                    <asp:Image ID="Image1" runat="server" ImageUrl='<%#Eval("PHOTO") %>' Height="30" Width="30" />
                </td>
                <td>
                    <asp:CheckBox ID="BLOCKCheckBox" runat="server"  Checked="false" Enabled="true" />
                </td>
                <td>
                   <asp:Button ID="DeleteButton" runat="server" CommandName="Delete" Text="Delete" BackColor="#577109" ForeColor="Black" BorderStyle="Solid" Font-Names="Copperplate Gothic Light" />
                   <asp:Button ID="EditButton" runat="server" CommandName="Edit" Text="Edit" BackColor="#577109" ForeColor="Black" BorderStyle="Solid" Font-Names="Copperplate Gothic Light"/>
                </td>
            </tr>
        </AlternatingItemTemplate>

        <EditItemTemplate>
            <tr class="EITtr">

                <td>
                    <asp:TextBox ID="NAMETextBox" runat="server" Text='<%# Bind("NAME") %>' />
                </td>
                <td>
                    <asp:Label ID="IDLabel1" runat="server" Text='<%# Eval("ID") %>' />
                </td>
                <td>
                    <asp:TextBox ID="ADDRESSTextBox" runat="server" Text='<%# Bind("ADDRESS") %>' />
                </td>
                <td>
                    <asp:TextBox ID="GENDERTextBox" runat="server" Text='<%# Bind("GENDER") %>' />
                </td>
                <td>
                    <asp:TextBox ID="MOBILENOTextBox" runat="server" Text='<%# Bind("MOBILENO") %>' />

                </td>
                <td>
                    <asp:TextBox ID="PHOTOTextBox" runat="server" Text='<%# Bind("PHOTO") %>' />
                </td>
                <td>
                    <asp:CheckBox ID="BLOCKCheckBox" runat="server" Checked="false" Enabled="true"   />
                </td>
                <td>
                    <asp:Button ID="UpdateButton" runat="server" CommandName="Update" 
                        Text="Update" BackColor="#577109" ForeColor="Black" BorderStyle="Solid" Font-Names="Copperplate Gothic Light" />
                    <asp:Button ID="CancelButton" runat="server" CommandName="Cancel" 
                        Text="Cancel" BackColor="#577109" ForeColor="Black" BorderStyle="Solid" Font-Names="Copperplate Gothic Light" />
                </td>
            </tr>
        </EditItemTemplate>

        <EmptyDataTemplate>
            <table runat="server" class="EDTtable" >
                <tr>
                    <td>
                        No data was returned.</td>
                </tr>
            </table>
        </EmptyDataTemplate>

        <InsertItemTemplate>
            <tr>

                <td>
                    <asp:TextBox ID="NAMETextBox" runat="server" Text='<%# Bind("NAME") %>' />
                </td>
                <td>
                    &nbsp;</td>
                <td>
                    <asp:TextBox ID="ADDRESSTextBox" runat="server" Text='<%# Bind("ADDRESS") %>' />
                </td>
                <td>
                    <asp:TextBox ID="GENDERTextBox" runat="server" Text='<%# Bind("GENDER") %>' />
                </td>
                <td>
                    <asp:TextBox ID="MOBILENOTextBox" runat="server" Text='<%# Bind("MOBILENO") %>' />
                </td>
                <td>
                    <asp:TextBox ID="PHOTOTextBox" runat="server" Text='<%# Bind("PHOTO") %>' />
                </td>
                <td>
                    <asp:CheckBox ID="BLOCKCheckBox" runat="server"  Checked="false" Enabled="true"  />
                </td>
                 <td>
                    <asp:Button ID="InsertButton" runat="server" CommandName="Insert" 
                        Text="Insert" BackColor="#577109" ForeColor="Black" BorderStyle="Solid" Font-Names="Copperplate Gothic Light"/>
                    <asp:Button ID="CancelButton1" runat="server" CommandName="Cancel" 
                        Text="Clear" BackColor="#577109" ForeColor="Black" BorderStyle="Solid" Font-Names="Copperplate Gothic Light" />
                </td>
            </tr>
        </InsertItemTemplate>

        <ItemTemplate>
            <tr class="ITtr">

                <td>
                    <asp:Label ID="NAMELabel" runat="server" Text='<%# Eval("NAME") %>' />
                </td>
                <td>
                    <asp:Label ID="IDLabel" runat="server" Text='<%# Eval("ID") %>' />
                </td>
                <td>
                    <asp:Label ID="ADDRESSLabel" runat="server" Text='<%# Eval("ADDRESS") %>' />
                </td>
                <td>
                    <asp:Label ID="GENDERLabel" runat="server" Text='<%# Eval("GENDER") %>' />
                </td>
                <td>
                    <asp:Label ID="MOBILENOLabel" runat="server" Text='<%# Eval("MOBILENO") %>' />
                </td>
                <td>
                    <asp:Image ID="Image" runat="server" ImageUrl='<%#Eval("PHOTO") %>' Height="30" Width="30" />
                </td>
                <td>
                    <asp:CheckBox ID="BLOCKCheckBox" runat="server"  Checked="false" Enabled="true" />
                </td>
                 <td>
                   <asp:Button ID="DeleteButton1" runat="server" CommandName="Delete" 
                        Text="Delete" BackColor="#577109" ForeColor="Black" BorderStyle="Solid" Font-Names="Copperplate Gothic Light" />
                    <asp:Button ID="EditButton1" runat="server" CommandName="Edit" Text="Edit" BackColor="#577109" ForeColor="Black" BorderStyle="Solid" Font-Names="Copperplate Gothic Light"/>
                </td>
            </tr>
        </ItemTemplate>

        <LayoutTemplate>
            <table runat="server">
                <tr runat="server">
                    <td runat="server">
                        <table ID="itemPlaceholderContainer" runat="server" border="1" class="LTtable" >

                      <tr runat="server" Class="LTtr">

                                <th runat="server">
                                    NAME</th>
                                <th runat="server">
                                    ID</th>
                                <th runat="server">
                                    ADDRESS</th>
                                <th runat="server">
                                    GENDER</th>
                                <th runat="server">
                                    MOBILENO</th>
                                <th runat="server">
                                    PHOTO</th>
                                <th runat="server">
                                    BLOCK</th>
                                <th id="Th1" runat="server">
                                </th>
                            </tr>
                            <tr ID="itemPlaceholder" runat="server">
                            </tr>
                        </table>
                    </td>
                </tr>
                <tr runat="server">
                    <td runat="server" class="LTtd">
                    </td>
                </tr>
            </table>
        </LayoutTemplate>

        <SelectedItemTemplate>
            <tr Class=".SITtr">

                <td>
                    <asp:Label ID="NAMELabel" runat="server" Text='<%# Eval("NAME") %>' />
                </td>
                <td>
                    <asp:Label ID="IDLabel" runat="server" Text='<%# Eval("ID") %>' />
                </td>
                <td>
                    <asp:Label ID="ADDRESSLabel" runat="server" Text='<%# Eval("ADDRESS") %>' />
                </td>
                <td>
                    <asp:Label ID="GENDERLabel" runat="server" Text='<%# Eval("GENDER") %>' />
                </td>
                <td>
                    <asp:Label ID="MOBILENOLabel" runat="server" Text='<%# Eval("MOBILENO") %>' />
                </td>
                 <td>
                     <asp:Label ID="PHOTOLabel" runat="server" Text='<%# Eval("PHOTO") %>' />
                </td>
                 <td>
                    <asp:CheckBox ID="BLOCKCheckBox" runat="server" Checked="false" Enabled="true"  />
                </td>
                <td>
                    <asp:Button ID="DeleteButton2" runat="server" CommandName="Delete" 
                        Text="Delete" BackColor="#577109" ForeColor="Black" BorderStyle="Solid" Font-Names="Copperplate Gothic Light" />
                    <asp:Button ID="EditButton2" runat="server" CommandName="Edit" Text="Edit" BackColor="#577109" ForeColor="Black" BorderStyle="Solid" Font-Names="Copperplate Gothic Light"/>
                </td>
            </tr>
        </SelectedItemTemplate>

    </asp:ListView>

我的aspx.cs 编码是......

 protected void ListView1_OnItemDataBound(object sender, ListViewItemEventArgs e)
    {
        if (e.Item.ItemType == ListViewItemType.DataItem)
        {
            CheckBox BLOCKCheckBox = (e.Item.FindControl("BLOCKCheckBox") as CheckBox);
            if (BLOCKCheckBox.Checked)
            {

            }
            else
            {

            }

        }
    }

请帮帮我.....

谢谢……

【问题讨论】:

  • 您希望实现的逻辑部分应该通过 JavaScript,而不是 C#,或者使用 Ajax 请求(也包括 JS),或者可能完全重新加载页面(纯 .asp)来完成。我认为您需要阅读有关主题的更多信息。
  • 行的背面颜色变化并不重要,
  • 应该改为只读模式

标签: c# asp.net listview checkbox


【解决方案1】:

为块复选框添加 oncheckedChanged 和 autopostback=true

aspx.cs

 protected void BLOCKCheckBox_CheckedChanged(object sender, EventArgs e)
    {
        CheckBox checkbox = (CheckBox)sender;
        ListViewItem itm = (ListViewItem)checkbox.NamingContainer;
        if (lstview1.EditIndex == itm.DisplayIndex)
        {

            (itm.FindControl("NAMETextBox") as TextBox).ReadOnly = true;
        }
    }

【讨论】:

    猜你喜欢
    • 2021-06-15
    • 1970-01-01
    • 1970-01-01
    • 2016-10-10
    • 1970-01-01
    • 2018-06-26
    • 2011-03-15
    相关资源
    最近更新 更多