TuerelF Ответов: 2

Состояние флажка в gridview всегда снято


У меня есть следующая HTML-страница с флажком "chkZiel" в gridview "dgZiel":
<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="CC_SimpleTargetReport.aspx.cs" Inherits="CCMatrixDB_WEB.REPORT.CC_SimpleTargetReport" %>

<%@ Register Assembly="Microsoft.ReportViewer.WebForms, Version=12.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" Namespace="Microsoft.Reporting.WebForms" TagPrefix="rsweb" %>

<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server">
    <script src="Scripts/jquery-1.10.2.min.js"></script>
    <script src="Scripts/JavaSript_scroll.js"></script>
    <asp:Table ID="Table1" runat="server" Width="100%">
        <asp:TableRow ID="TableRow1" runat="server">
            <asp:TableCell ID="TableCell1" runat="server" HorizontalAlign="Left">
                <asp:TextBox ID="tbCOL1" runat="server" BorderWidth="0" BorderStyle="None" Text="TARGET" Width="100"></asp:TextBox>
            </asp:TableCell>
            <asp:TableCell ID="TableCell2" runat="server" HorizontalAlign="Left">
                <asp:TextBox ID="tbCOL2" runat="server" BorderWidth="0" BorderStyle="None" Text="COMPONENT" Width="100"></asp:TextBox>
            </asp:TableCell>
        </asp:TableRow>
        <asp:TableRow ID="TableRow2" runat="server">
            <asp:TableCell ID="TableCell3" runat="server" HorizontalAlign="Left">
                <DIV style=" border-style: double; OVERFLOW: auto; WIDTH: 550px; HEIGHT: 168px"> 
                    <asp:GridView ID="dgZiel" runat="server" BackColor="White" 

                        CellPadding="4" GridLines="Horizontal" AutoGenerateColumns="false" ShowHeader="False">
                        <Columns>
                            <asp:TemplateField ItemStyle-HorizontalAlign="Center" >
                                <ItemTemplate>
                                    <asp:CheckBox ID="chkZiel" runat="server"  Width="40px" />
                                </ItemTemplate>
                            </asp:TemplateField>
                            <asp:BoundField DataField="Name" ItemStyle-Width="100%" />
                        </Columns>
                    </asp:GridView>
                </div>
            </asp:TableCell>
        </asp:TableRow>
		<asp:TableRow ID="TableRow3" runat="server">
            <asp:TableCell ID="TableCell5" runat="server" HorizontalAlign="Left" ColumnSpan="2" VerticalAlign="Bottom" Height="45px">
                <asp:Button ID="Button" runat="server" Text="GENERATE REPORT" Width="142px" onclick="Button_Click" />
            </asp:TableCell>
        </asp:TableRow>
    </asp:Table>
</asp:Content>


Следующий код проверяет состояние флажка для всех строк gridview:

    protected void Button_Click(object sender, EventArgs e)
    {
        for (int i = 0; i < dgZiel.Rows.Count; i++)
        {
            CheckBox chkZiel = (CheckBox) dgZiel.Rows[i].FindControl("chkZiel");
            if (chkZiel.Checked == true)
            {
                string name = dgZiel.Rows[i].Cells[1].Text;
            }
        }
}


Но состояние всех флажков не отмечено (chkZiel.Checked - & gt; false) равно, если флажок установлен или нет.
Что случилось?

Что я уже пробовал:

Я пробовал разные коды c#, но состояние флажка всегда остается непроверенным.

Kornfeld Eliyahu Peter

Вы нажимаете кнопку, которая инициирует полный пост в задней части страницы...Все элементы управления инициализируются в исходное состояние (флажок снят)...
Идите и узнайте о частичном обратном посте-AJAX...

Karthik_Mahalingam

пост ваш код привязки

2 Ответов

Рейтинг:
1

Vincent Maverick Durano

Обычно это происходит, если вы не привязываете свой GridView к блоку not Ispostack. Если вы привязываете свою сетку при загрузке страницы, то обязательно оберните ее в Not Ispostback. Например:

protected void Page_Load(object sender, EventArgs e){
        if (!IsPostBack)
        {
            // Populate your grid here and call DataBind()
           
        }
}


Это гарантирует, что состояние вашего флажка не будет сброшено при обратной передаче.


Рейтинг:
0

TuerelF

Большое вам спасибо. Я забыл:
если (! это.IsPostBack)
оператор в функции Page_Load ().


Vincent Maverick Durano

Вот что я сказал. :) Рад, что теперь это работает для вас :)