не может получить доступ к элементам управления asp из gridview - PullRequest
0 голосов
/ 08 декабря 2011

У меня есть пользовательский элемент управления с сеткой, но по какой-то причине я не могу использовать элементы управления asp из внутреннего кода.В других пользовательских элементах управления я могу использовать их как обычно, но при этом конкретном пользовательском элементе управления я получаю сообщение об ошибке, когда пытаюсь использовать элемент управления, который используется в виде сетки.Вот код для моего gridview, пожалуйста, дайте мне знать, если вы заметили что-то необычное:

<asp:GridView ID="gvGDG" runat="server" AutoGenerateColumns="False" 
    DataKeyNames="ID" DataSourceID="SqlDataSource1" Width="100%" CssClass="mGrid" GridLines="None" PagerStyle-CssClass="pgr" AlternatingRowStyle-CssClass="alt"
    AllowPaging="True" >
<AlternatingRowStyle CssClass="alt"></AlternatingRowStyle>
    <Columns>
        <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" 
            ItemStyle-HorizontalAlign="Center" CausesValidation="False">
        </asp:CommandField>
        <asp:BoundField DataField="ID" HeaderText="ID" 
            SortExpression="ID" InsertVisible="False" ReadOnly="True" 
            ItemStyle-HorizontalAlign="Center" >
        </asp:BoundField>      
        <asp:TemplateField HeaderText="Country" SortExpression="Country">
            <ItemTemplate>
                <asp:Label ID="Label1" runat="server" Text='<%# Bind("Country") %>'></asp:Label>
            </ItemTemplate>
            <EditItemTemplate>
            <asp:UpdatePanel ID="countrypanel" runat="server">            
            <ContentTemplate>
            <asp:DropDownList ID="ddlCountry" runat="server" DataTextField="name" DataValueField="ID"  onselectedindexchanged="ddlcountry_SelectedIndexChanged" AppendDataBoundItems="true" AutoPostBack="true" />
            </ContentTemplate>
            <Triggers>
            <asp:AsyncPostBackTrigger ControlID="ddlCountry" />
            </Triggers>
            </asp:UpdatePanel>
            </EditItemTemplate>
            <ItemStyle HorizontalAlign="Center" />
        </asp:TemplateField>
        <asp:TemplateField HeaderText="State Province" SortExpression="State_Province">
            <ItemTemplate>
                <asp:Label ID="Label2" runat="server" Text='<%# Bind("State_Province") %>'></asp:Label>
            </ItemTemplate>
            <EditItemTemplate>
                             <asp:DropDownList ID="ddlState" runat="server" DataSourceID="SqlDataSource3" SelectedValue='<%# Bind("State_Province") %>'
                                 DataTextField="StateName" DataValueField="StateName">
                </asp:DropDownList>
                             <asp:SqlDataSource ID="SqlDataSource3" runat="server" 
                                 ConnectionString="<%$ ConnectionStrings:ApplicationServices %>" 
                                 SelectCommand="SELECT [StateName] FROM [States]"></asp:SqlDataSource>
            </EditItemTemplate>
            <ItemStyle HorizontalAlign="Center" />
        </asp:TemplateField>
                <asp:TemplateField HeaderText="GDG Type" SortExpression="State_Province">
            <ItemTemplate>
                <asp:Label ID="Label3" runat="server" Text='<%# Bind("GDG_Type") %>'></asp:Label>
            </ItemTemplate>
            <EditItemTemplate>
                             <asp:DropDownList ID="ddlGdg" runat="server" DataSourceID="SqlDataSource4" SelectedValue='<%# Bind("GDG_Type") %>'
                                 DataTextField="GDG" DataValueField="GDG">
                </asp:DropDownList>
                             <asp:SqlDataSource ID="SqlDataSource4" runat="server" 
                                 ConnectionString="<%$ ConnectionStrings:ApplicationServices %>" 
                                 SelectCommand="SELECT [GDG] FROM [GDG]"></asp:SqlDataSource>
            </EditItemTemplate>
            <ItemStyle HorizontalAlign="Center" />
        </asp:TemplateField>

          <asp:TemplateField HeaderText="Energy Type UOM" SortExpression="Energy_Type_UOM">
            <ItemTemplate>
                <asp:Label ID="Label4" runat="server" Text='<%# Bind("Energy_Type_UOM") %>'></asp:Label>
            </ItemTemplate>
            <EditItemTemplate>
                             <asp:DropDownList ID="ddlUomEnergy" runat="server" DataSourceID="SqlDataSource5" SelectedValue='<%# Bind("Energy_Type_UOM") %>'
                                 DataTextField="UOM" DataValueField="UOM">
                </asp:DropDownList>
                             <asp:SqlDataSource ID="SqlDataSource5" runat="server" 
                                 ConnectionString="<%$ ConnectionStrings:ApplicationServices %>" 
                                 SelectCommand="SELECT UOM FROM UOM WHERE (Type = 'E')"></asp:SqlDataSource>
            </EditItemTemplate>
            <ItemStyle HorizontalAlign="Center" />
        </asp:TemplateField>


                      <asp:TemplateField HeaderText="GDG UOM" SortExpression="GDG_UOM">
            <ItemTemplate>
                <asp:Label ID="Label5" runat="server" Text='<%# Bind("GDG_UOM") %>'></asp:Label>
            </ItemTemplate>
            <EditItemTemplate>
                             <asp:DropDownList ID="ddlUom" runat="server" DataSourceID="SqlDataSource6" SelectedValue='<%# Bind("GDG_UOM") %>'
                                 DataTextField="UOM" DataValueField="UOM">
                </asp:DropDownList>
                             <asp:SqlDataSource ID="SqlDataSource6" runat="server" 
                                 ConnectionString="<%$ ConnectionStrings:ApplicationServices %>" 
                                 SelectCommand="SELECT UOM FROM UOM WHERE (Type = 'O')"></asp:SqlDataSource>
            </EditItemTemplate>
            <ItemStyle HorizontalAlign="Center" />
        </asp:TemplateField>     
        <asp:BoundField DataField="GDG_Coeficient_Value" 
            HeaderText="GDG Coeficient Value" SortExpression="GDG Coeficient Value" 
            ItemStyle-HorizontalAlign="Center" >
<ItemStyle HorizontalAlign="Center"></ItemStyle>
        </asp:BoundField>
    </Columns>

<PagerStyle CssClass="pgr"></PagerStyle>
</asp:GridView>

Заранее спасибо, Laziale

Ответы [ 2 ]

0 голосов
/ 21 июля 2016

Я думаю, что, возможно, у вас что-то не так с кодом в верхней строке страницы.

Пожалуйста, проверьте CodeFile = "??????" and Inherits = "????????"

0 голосов
/ 08 декабря 2011

Если я прав тогда.У вас есть пользовательский контроль.Скажите wucMyControl.ascx, где у вас есть элемент управления gridview gvGDG.И вы не можете получить к нему доступ из wucMyControl.ascx.cs.Если это проблема, тогда используйте решение ниже:

В вашем файле конструктора пользовательских элементов управления проверьте уровень доступа элемента управления Gridview.Может быть, он будет случайно изменен на частный, а не защищенный.Если он закрытый, сделайте его защищенным или общедоступным и проверьте, можете ли вы получить к нему доступ сейчас или нет.

Обновление К вашему сведению, вы не можете получить прямой доступ к дочерним элементам управления.Для этого вам необходимо получить доступ к элементам управления DataBound.

Здесь, в вашем случае:

protected void GridView_RowDataBound(sender, e)
{
    if(e.Row.RowType == DataControlRowtype.DataRow)
     {
          var ddl = (DropdownList)e.Row.FindControl("ddlCountry");
          // do whatever you want with ddl. Similarly you can find all html and server control inside a gridview.
     }
}

Это поможет вам ...

Добавление события в дочерние элементы управления gridview

В вашем GridView1_RowDataBoundметод, добавьте обработчик при создании раскрывающегося списка, вызвав ddl.SelectedIndexChanged += new EventHandler(ddl_SelectedIndexChanged);

Затем объявите метод void ddl_SelectedIndexChanged(object sender, EventArgs e) для обработки вашей логики.Аргумент отправителя будет ссылкой на выпадающий список, который был выбран.Также установите для свойства AutoPostback выпадающего списка значение true.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...