Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# asp.net Gridview复选框-假值_C#_Asp.net_Gridview - Fatal编程技术网

C# asp.net Gridview复选框-假值

C# asp.net Gridview复选框-假值,c#,asp.net,gridview,C#,Asp.net,Gridview,我读过其他几个类似的问题,这看起来是一个数据绑定问题。我的问题有些不同,因为我没有在页面加载时绑定数据。当从同一页上的另一个表中进行选择时,将绑定数据 <asp:TemplateField> <ItemTemplate> <asp:CheckBox ID="Chk" runat="server" OnCheckedChanged="Chk

我读过其他几个类似的问题,这看起来是一个数据绑定问题。我的问题有些不同,因为我没有在页面加载时绑定数据。当从同一页上的另一个表中进行选择时,将绑定数据

       <asp:TemplateField>
                <ItemTemplate>                      
                    <asp:CheckBox ID="Chk" runat="server" OnCheckedChanged="Chk_OnCheckedChanged" AutoPostBack="True"  Checked='<%# Bind("Paid") %>' />
                </ItemTemplate>                    
            </asp:TemplateField> 

    </Columns>
               <HeaderStyle CssClass="TableHeader" />
               <SelectedRowStyle BackColor="Silver" />
</asp:GridView> 
例如,我的页面有3个表(其中一个最初没有值):

       <asp:TemplateField>
                <ItemTemplate>                      
                    <asp:CheckBox ID="Chk" runat="server" OnCheckedChanged="Chk_OnCheckedChanged" AutoPostBack="True"  Checked='<%# Bind("Paid") %>' />
                </ItemTemplate>                    
            </asp:TemplateField> 

    </Columns>
               <HeaderStyle CssClass="TableHeader" />
               <SelectedRowStyle BackColor="Silver" />
</asp:GridView> 
会话-每个会话都有一个会话日期和与会者列表

       <asp:TemplateField>
                <ItemTemplate>                      
                    <asp:CheckBox ID="Chk" runat="server" OnCheckedChanged="Chk_OnCheckedChanged" AutoPostBack="True"  Checked='<%# Bind("Paid") %>' />
                </ItemTemplate>                    
            </asp:TemplateField> 

    </Columns>
               <HeaderStyle CssClass="TableHeader" />
               <SelectedRowStyle BackColor="Silver" />
</asp:GridView> 
PlayerList-包含所有玩家的记录

       <asp:TemplateField>
                <ItemTemplate>                      
                    <asp:CheckBox ID="Chk" runat="server" OnCheckedChanged="Chk_OnCheckedChanged" AutoPostBack="True"  Checked='<%# Bind("Paid") %>' />
                </ItemTemplate>                    
            </asp:TemplateField> 

    </Columns>
               <HeaderStyle CssClass="TableHeader" />
               <SelectedRowStyle BackColor="Silver" />
</asp:GridView> 
与会者-显示会话表中选定会话的参与者列表

       <asp:TemplateField>
                <ItemTemplate>                      
                    <asp:CheckBox ID="Chk" runat="server" OnCheckedChanged="Chk_OnCheckedChanged" AutoPostBack="True"  Checked='<%# Bind("Paid") %>' />
                </ItemTemplate>                    
            </asp:TemplateField> 

    </Columns>
               <HeaderStyle CssClass="TableHeader" />
               <SelectedRowStyle BackColor="Silver" />
</asp:GridView> 
每次我选择一个会话,然后选中“与会者”复选框时,该值总是“False”

       <asp:TemplateField>
                <ItemTemplate>                      
                    <asp:CheckBox ID="Chk" runat="server" OnCheckedChanged="Chk_OnCheckedChanged" AutoPostBack="True"  Checked='<%# Bind("Paid") %>' />
                </ItemTemplate>                    
            </asp:TemplateField> 

    </Columns>
               <HeaderStyle CssClass="TableHeader" />
               <SelectedRowStyle BackColor="Silver" />
</asp:GridView> 
提前谢谢

       <asp:TemplateField>
                <ItemTemplate>                      
                    <asp:CheckBox ID="Chk" runat="server" OnCheckedChanged="Chk_OnCheckedChanged" AutoPostBack="True"  Checked='<%# Bind("Paid") %>' />
                </ItemTemplate>                    
            </asp:TemplateField> 

    </Columns>
               <HeaderStyle CssClass="TableHeader" />
               <SelectedRowStyle BackColor="Silver" />
</asp:GridView> 
这是我的密码

       <asp:TemplateField>
                <ItemTemplate>                      
                    <asp:CheckBox ID="Chk" runat="server" OnCheckedChanged="Chk_OnCheckedChanged" AutoPostBack="True"  Checked='<%# Bind("Paid") %>' />
                </ItemTemplate>                    
            </asp:TemplateField> 

    </Columns>
               <HeaderStyle CssClass="TableHeader" />
               <SelectedRowStyle BackColor="Silver" />
</asp:GridView> 
Matches.aspx.cs

public partial class Matches : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }


    protected void GridSessionsList_SelectedIndexChanged(object sender, EventArgs e)
    {

    }

    protected void GridAttendees_SelectedIndexChanged(object sender, EventArgs e)
    {
             // this will remove an attendee from the list   
    }

    protected void ButtonUpdatePaid_Click1(object sender, EventArgs e)
    {
        Session editSession = new Session();    

        foreach (GridViewRow row in GridAttendees.Rows)
        {
            editSession.Date = Convert.ToDateTime(GridSessionsList.SelectedValue);
            int PlayerID = Convert.ToInt32(row.Cells[1].Text);
            bool Paid = Convert.ToBoolean(row.FindControl("Chk") as TextBox);
            editSession.UpdateAttendeeList(PlayerID, Paid);                                  
        }                      
    }

    protected void GridPlayersList_SelectedIndexChanged(object sender, EventArgs e)
    {
        try
        {
            Session editSession = new Session();
            editSession.Date = Convert.ToDateTime(GridSessionsList.SelectedValue);
            int PlayerID = Convert.ToInt32(GridPlayersList.SelectedRow.Cells[1].Text);
            editSession.UpdateAttendeeList(PlayerID);
            GridAttendees.DataBind();
            LabelError.Text = "Player has been added to the game on .";
        }
        catch
        {
            LabelError.Text = "Something went wrong.. Ensure you have a game selected.";
        }  
    }

    public void Chk_OnCheckedChanged(object sender, EventArgs e) 
    {

    }
       <asp:TemplateField>
                <ItemTemplate>                      
                    <asp:CheckBox ID="Chk" runat="server" OnCheckedChanged="Chk_OnCheckedChanged" AutoPostBack="True"  Checked='<%# Bind("Paid") %>' />
                </ItemTemplate>                    
            </asp:TemplateField> 

    </Columns>
               <HeaderStyle CssClass="TableHeader" />
               <SelectedRowStyle BackColor="Silver" />
</asp:GridView> 
以下是来自aspx页面的与会者GridView摘录:

<asp:GridView ID="GridAttendees" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource2" CssClass="Table" DataKeyNames="PlayerID" OnSelectedIndexChanged="GridAttendees_SelectedIndexChanged">
    <Columns>
        <asp:CommandField ShowSelectButton="True" SelectText="Select"/>
        <asp:BoundField DataField="PlayerID" HeaderStyle-CssClass = "hideGridColumn" ItemStyle-CssClass="hideGridColumn" HeaderText="PlayerID" SortExpression="PlayerID" InsertVisible="False" ReadOnly="True" >
       <asp:TemplateField>
                <ItemTemplate>                      
                    <asp:CheckBox ID="Chk" runat="server" OnCheckedChanged="Chk_OnCheckedChanged" AutoPostBack="True"  Checked='<%# Bind("Paid") %>' />
                </ItemTemplate>                    
            </asp:TemplateField> 

    </Columns>
               <HeaderStyle CssClass="TableHeader" />
               <SelectedRowStyle BackColor="Silver" />
</asp:GridView> 

       <asp:TemplateField>
                <ItemTemplate>                      
                    <asp:CheckBox ID="Chk" runat="server" OnCheckedChanged="Chk_OnCheckedChanged" AutoPostBack="True"  Checked='<%# Bind("Paid") %>' />
                </ItemTemplate>                    
            </asp:TemplateField> 

    </Columns>
               <HeaderStyle CssClass="TableHeader" />
               <SelectedRowStyle BackColor="Silver" />
</asp:GridView> 

       <asp:TemplateField>
                <ItemTemplate>                      
                    <asp:CheckBox ID="Chk" runat="server" OnCheckedChanged="Chk_OnCheckedChanged" AutoPostBack="True"  Checked='<%# Bind("Paid") %>' />
                </ItemTemplate>                    
            </asp:TemplateField> 

    </Columns>
               <HeaderStyle CssClass="TableHeader" />
               <SelectedRowStyle BackColor="Silver" />
</asp:GridView> 

       <asp:TemplateField>
                <ItemTemplate>                      
                    <asp:CheckBox ID="Chk" runat="server" OnCheckedChanged="Chk_OnCheckedChanged" AutoPostBack="True"  Checked='<%# Bind("Paid") %>' />
                </ItemTemplate>                    
            </asp:TemplateField> 

    </Columns>
               <HeaderStyle CssClass="TableHeader" />
               <SelectedRowStyle BackColor="Silver" />
</asp:GridView> 

我认为您正在将复选框转换为文本框

       <asp:TemplateField>
                <ItemTemplate>                      
                    <asp:CheckBox ID="Chk" runat="server" OnCheckedChanged="Chk_OnCheckedChanged" AutoPostBack="True"  Checked='<%# Bind("Paid") %>' />
                </ItemTemplate>                    
            </asp:TemplateField> 

    </Columns>
               <HeaderStyle CssClass="TableHeader" />
               <SelectedRowStyle BackColor="Silver" />
</asp:GridView> 
在这里:

       <asp:TemplateField>
                <ItemTemplate>                      
                    <asp:CheckBox ID="Chk" runat="server" OnCheckedChanged="Chk_OnCheckedChanged" AutoPostBack="True"  Checked='<%# Bind("Paid") %>' />
                </ItemTemplate>                    
            </asp:TemplateField> 

    </Columns>
               <HeaderStyle CssClass="TableHeader" />
               <SelectedRowStyle BackColor="Silver" />
</asp:GridView> 
试试这个:

       <asp:TemplateField>
                <ItemTemplate>                      
                    <asp:CheckBox ID="Chk" runat="server" OnCheckedChanged="Chk_OnCheckedChanged" AutoPostBack="True"  Checked='<%# Bind("Paid") %>' />
                </ItemTemplate>                    
            </asp:TemplateField> 

    </Columns>
               <HeaderStyle CssClass="TableHeader" />
               <SelectedRowStyle BackColor="Silver" />
</asp:GridView> 
CheckBox cb = (CheckBox)row.FindControl("Chk");
bool Paid = cb.Checked;

当更改为:bool Paid=Convert.ToBoolean(row.FindControl(“Chk”)为复选框)时,始终为false的复选框为哪个GridView?GridAttendes保留复选框(抱歉,剪切和粘贴问题);我收到错误:无法将“System.Web.UI.WebControls.CheckBox”类型的对象强制转换为“System.IConvertible”。