本文介绍了在运行时添加行的Gridview中,下拉列表未绑定.的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

海伊前辈..

我创建了一个网格视图,如下所示.

Haii Seniors..

i have Created a gird view as follows..

<

<asp:GridView ID="dgrGenQry" runat="server" AutoGenerateColumns="False" 

                        AllowSorting="True" PageSize="1" onrowdatabound="dgrGenQry_RowDataBound" 

                        onselectedindexchanged="dgrGenQry_SelectedIndexChanged" >
                        <Columns>
                            <asp:TemplateField HeaderText="Field Name">
                                <ItemTemplate>
                                    <asp:DropDownList ID="ddlField" runat="server" AppendDataBoundItems="True" 

                                        AutoPostBack="True" Width="140px" 

                                        onselectedindexchanged="ddlField_SelectedIndexChanged">
                                        <asp:ListItem Value="0">Select</asp:ListItem>
                                    </asp:DropDownList>
                                </ItemTemplate>
                                <ControlStyle Font-Bold="True" Font-Names="Arial Black" />
                            </asp:TemplateField>
                            <asp:TemplateField HeaderText="Operator">
                                <ItemTemplate>
                                    <asp:DropDownList ID="ddlOprtr" runat="server" AppendDataBoundItems="True" 

                                        AutoPostBack="True" Width="140px" 

                                        onselectedindexchanged="ddlOprtr_SelectedIndexChanged">

                                    </asp:DropDownList>
                                </ItemTemplate>
                            </asp:TemplateField>
                            <asp:TemplateField HeaderText="Value">
                                <ItemTemplate>
                                    <asp:TextBox ID="txtValue" runat="server"></asp:TextBox>
                                    <asp:DropDownList ID="ddlValue" runat="server" 

                                        onselectedindexchanged="ddlValue_SelectedIndexChanged" Visible="False">
                                    </asp:DropDownList>
                                    <asp:Calendar ID="calValue" runat="server" Visible="False"></asp:Calendar>
                                </ItemTemplate>
                            </asp:TemplateField>
                            <asp:TemplateField HeaderText="AND/OR">
                                <ItemTemplate>
                                    <asp:DropDownList ID="ddlAndOr"  runat="server" AutoPostBack="True" 

                                        Width="140px"  önselectedindexchanged="ddlAndOr_SelectedIndexChanged">
                                        <asp:ListItem Value="0">Select</asp:ListItem>
                                        <asp:ListItem>AND</asp:ListItem>
                                        <asp:ListItem>OR</asp:ListItem>
                                    </asp:DropDownList>
                                </ItemTemplate>
                            </asp:TemplateField>
                        </Columns>
                    </asp:GridView>


并在页面加载事件中使用以下函数对其进行初始化


and am initializing this in the Page load Event with the Following Function

private void SetInitialRow()
   {
       DataTable dt = new DataTable();
       DataRow dr = null;
       dt.Columns.Add(new DataColumn("Field Name", typeof(string)));
       dt.Columns.Add(new DataColumn("Operator", typeof(string)));
       dt.Columns.Add(new DataColumn("Value", typeof(string)));
       dt.Columns.Add(new DataColumn("AND/OR", typeof(string)));
       dr = dt.NewRow();
       //string[] a = { "Select", "Equal to", "Greater Than", "Less Than", "Contains", "Like" };
       dr["Field Name"] = "Anish";
       dr["Operator"] = "Anish";
       dr["Operator"] = "Anish";
       dr["Value"] = "Anish";
       dr["AND/OR"] = "Anish";
       dt.Rows.Add(dr);
       //dr = dt.NewRow();
       //Store the DataTable in ViewState
       ViewState["CurrentTable"] = dt;

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

   }




并在gridview的Row databound事件中初始化下拉列表ddlField.




and in the Row databound Event of the gridview am initializing the dropdown list ddlField.

if (e.Row.RowType != DataControlRowType.Header )
            {
                    DropDownList dl = (DropDownList)dgrGenQry.Rows[e.Row.RowIndex].Cells[0].FindControl("ddlField");
                    dl.DataSource = DT;
                    dl.DataTextField = "SearchLblName";
                    dl.DataValueField = "SearchFldType";
                    dl.DataBind();
                    //lblTagLink.CommandArgument = e.Row.RowIndex.ToString();

            } 


此处出现错误索引超出范围.必须为非负数并且小于集合的大小.
参数名称:索引"
我该如何克服这个问题..我想在第一行创建本身中对其进行初始化..




问候..


Here am getting an Error "Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index"
how can i Overcome this.. i want to initialize it in the first row creation itself..




Regards..

推荐答案


DropDownList dl = (DropDownList)e.Row.FindControl("ddlField");
dl.DataSource = DT;
.
.
.
.

DropDownList dl = (DropDownList)dgrGenQry.Rows[e.Row.RowIndex].Cells[0].FindControl("ddlField");
dl.DataSource = DT;



谢谢........



Thank you........


这篇关于在运行时添加行的Gridview中,下拉列表未绑定.的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-23 12:33