Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.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# 填充gridview的dropdownlist时出现问题_C#_Asp.net_Gridview - Fatal编程技术网

C# 填充gridview的dropdownlist时出现问题

C# 填充gridview的dropdownlist时出现问题,c#,asp.net,gridview,C#,Asp.net,Gridview,OnRowDataBound=“grdViewCInfo\u RowDataBound” > 什么是(DropDownList)grdViewCInfo.Rows[e.NewEditIndex].Cells[4].FindControl(“DDLControl”)返回,是否设置了ddl 我想不会。也许那个牢房里没有“国家”控制 这是一个奇怪的巧合 OnRowDataBound="grdViewCInfo_RowDataBound" >

OnRowDataBound=“grdViewCInfo\u RowDataBound”
>
什么是
(DropDownList)grdViewCInfo.Rows[e.NewEditIndex].Cells[4].FindControl(“DDLControl”)返回,是否设置了
ddl

我想不会。也许那个牢房里没有“国家”控制

这是一个奇怪的巧合

              OnRowDataBound="grdViewCInfo_RowDataBound"

             >

        <RowStyle BackColor="#FFFBD6" ForeColor="#333333" />
        <Columns>

         <asp:TemplateField HeaderText="Concert Name" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center" ItemStyle-Width="150px" ItemStyle-Wrap="true">
                <ItemTemplate>
                    <asp:Label ID="lblName" runat="server" Text='<%#Bind("Concert_Name") %>'></asp:Label>
                </ItemTemplate>
                <EditItemTemplate>
                    <asp:TextBox ID="txtName" runat="server" Text='<%#Bind("Concert_Name") %>'></asp:TextBox>
                </EditItemTemplate>
            <HeaderStyle HorizontalAlign="Center" Height="40px"></HeaderStyle>

        <ItemStyle HorizontalAlign="Center"></ItemStyle>
            </asp:TemplateField>

            <asp:TemplateField HeaderText="Address" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center" ItemStyle-Width="150px" ItemStyle-Wrap="true">
                <ItemTemplate>
                    <asp:Label ID="lblAddr" runat="server" Text='<%#Bind("Address") %>'></asp:Label>
                </ItemTemplate>
                <EditItemTemplate>
                    <asp:TextBox ID="txtAddr" runat="server" Text='<%#Bind("Address") %>'></asp:TextBox>
                </EditItemTemplate>
            <HeaderStyle HorizontalAlign="Center" Height="40px"></HeaderStyle>

        <ItemStyle HorizontalAlign="Center"></ItemStyle>
            </asp:TemplateField>

            <asp:TemplateField HeaderText="City" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center">
                <ItemTemplate>
                    <asp:Label ID="lblCity" runat="server" Text='<%#Bind("City") %>'></asp:Label>
                </ItemTemplate>
                <EditItemTemplate>
                    <asp:TextBox ID="txtCity" runat="server" Text='<%#Bind("City") %>'></asp:TextBox>
                </EditItemTemplate>
                <HeaderStyle HorizontalAlign="Center"></HeaderStyle>
                <ItemStyle HorizontalAlign="Center"></ItemStyle>
            </asp:TemplateField>

            <asp:TemplateField HeaderText="Pincode" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center">
                <ItemTemplate>
                    <asp:Label ID="lblPincode" runat="server" Text='<%#Bind("Pincode") %>'></asp:Label>
                </ItemTemplate>
                <EditItemTemplate>
                    <asp:TextBox ID="txtPincode" runat="server" Text=' <%#Bind("Pincode") %>'></asp:TextBox>
                </EditItemTemplate>
                <HeaderStyle HorizontalAlign="Center"></HeaderStyle>
                <ItemStyle HorizontalAlign="Center"></ItemStyle>
            </asp:TemplateField>

            <asp:TemplateField HeaderText="Country" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center">
                <ItemTemplate>
                    <asp:Label ID="lblcountry" runat="server" Text='<%#Bind("Country") %>'></asp:Label>
                </ItemTemplate>
                <EditItemTemplate>
                <asp:DropDownList ID="ddlCountry" runat="server" >                                               
                </asp:DropDownList>  

                </EditItemTemplate>
                <HeaderStyle HorizontalAlign="Center"></HeaderStyle>
                <ItemStyle HorizontalAlign="Center"></ItemStyle>
            </asp:TemplateField>

            <asp:TemplateField HeaderText="Concert Date and Time" HeaderStyle-HorizontalAlign="Center"
                ItemStyle-HorizontalAlign="Center">
                <ItemTemplate>
                    <asp:Label ID="lblDateTime" runat="server" Text='<%#Bind("Concert_Date") %>'></asp:Label>
                </ItemTemplate>
                <EditItemTemplate>
                    <asp:TextBox ID="txtDateTime" runat="server" Text='<%#Bind("Concert_Date") %>'></asp:TextBox>
                </EditItemTemplate>
                        <HeaderStyle HorizontalAlign="Center"></HeaderStyle>
                        <ItemStyle HorizontalAlign="Center"></ItemStyle>
            </asp:TemplateField>

              <asp:CommandField ShowEditButton="True" CausesValidation="False">
                            <ItemStyle Width="50px" />
                     </asp:CommandField>
                     <asp:CommandField ShowDeleteButton="true">
                         <ItemStyle Width="50px" />
                     </asp:CommandField> 

        </Columns>
        <FooterStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
        <PagerStyle BackColor="#FFCC66" ForeColor="#333333" HorizontalAlign="Center" />
        <SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="Navy" />
        <HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
        <AlternatingRowStyle BackColor="White" />
    </asp:GridView>

下面已注释掉。

您的EditItemTemplate中是否有下拉列表

编辑:我不认为您在行编辑事件中实际处于编辑模式。如果将代码下移到row命令

然后检查编辑命令。将您的代码包装为

//grdViewCInfo.Rows[e.NewEditIndex].Cells[4].Controls.Add(ddl);

尽管保留你的
grdViewCInfo.EditIndex=e.NewEditIndex行,因为您需要它。

这一部分也应该在RowDataBound中完成

下面是一些示例代码

if(e.CommandName == "Edit")
{

// do your edit here.

}
应该这样做。

希望这有帮助。

你忘了告诉我们问题:)@naveen,我猜问题是由代码中的注释指示的,但是,也许我假设得太多了。@jodrell:我不明白。是吗?这让我很困惑。ddl.DataSource=ds//错误:对象引用未设置为对象的实例。您应该看到行数大于0。@user755230:是否使用TemplateField将GridView标记添加到您的question@user755230:嗯。。请在问题中更详细地说明它自己添加了更多内容,从下面的编辑中,我想知道填充国家的ds最初是否为空,在我删除该初始条件后它将如何运行,如果它有效。thnx非常有帮助
private static DataSet ds;
private const string query = "select * from tblcountrynames";
protected void grdViewCInfo_RowEditing(object sender, GridViewEditEventArgs e)
{
    grdViewCInfo.EditIndex = e.NewEditIndex;

    //guessing that this is your databind event
    dbLoad();
}
protected void grdViewCInfo_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowState == DataControlRowState.Edit)
    {
        //your ddl
        DropDownList ddl = (DropDownList)e.Row.FindControl("ddlCountry");

        PopulateCountries(ddl, query);
        //grdViewCInfo.Rows[e.NewEditIndex].Cells[4].Controls.Add(ddl);
    }
}

private void PopulateCountries(DropDownList ddl, string query)
{
    if(ds!= null && ds.Tables[0].Rows.Count >0)

        MySqlConnection objMycon1 = new MySqlConnection(strProvider);
        //commenting open; as adapter doesn't need connection to be open
        //objMycon1.Open();
        MySqlCommand cmd1 = new MySqlCommand(query, objMycon1);
        MySqlDataAdapter da = new MySqlDataAdapter(cmd1);
        ds = new DataSet();
        da.Fill(ds);
        objMycon1.Close();
        objMycon1.Dispose();//comment if objMycon1 is not IDisposible

    }

    if (ds.Tables[0].Rows.Count > 0)
    {
        ddl.DataSource = ds;
        ddl.DataTextField = "Name";
        ddl.DataValueField = "ID";
        ddl.DataBind();
    }
}