Как получить доступ к dropdownlistcontrol в grideview?
Привет
Я пытаюсь получить доступ к выпадающему списку внутри grideview, но я всегда получаю нулевой exeption
1-файл aspx
<pre><%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="Employee_Mangment.Default" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <div> <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="ObjectDataSource1" OnRowDeleted="GridView1_RowDeleted" DataKeyNames="ID" OnRowUpdated="GridView1_RowUpdated" OnRowDataBound="GridView1_RowDataBound"> <Columns> <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" /> <asp:BoundField DataField="ID" HeaderText="ID" SortExpression="ID" ReadOnly="true" /> <asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" /> <asp:TemplateField HeaderText="Education" SortExpression="Education"> <EditItemTemplate> <asp:DropDownList ID="DropDownList1" runat="server" DataSourceID="ObjectDataSource2" DataTextField="EducationType" DataValueField="EducationType" SelectedValue='<%# Bind("Education") %>'> </asp:DropDownList> <asp:ObjectDataSource ID="ObjectDataSource2" runat="server" SelectMethod="GetEducations" TypeName="Employee_Mangment.Data.EducationDataAccess"></asp:ObjectDataSource> </EditItemTemplate> <ItemTemplate> <asp:Label ID="Label1" runat="server" Text='<%# Bind("Education") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView> <asp:Label ID="Label1" runat="server" Text="" Font-Bold="true"></asp:Label> <asp:Label ID="Label2" runat="server" Text="" Font-Bold="true"></asp:Label> <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" SelectMethod="GetEmployees" TypeName="Employee_Mangment.Data.EmployeeDataAccess" UpdateMethod="UpdateEmployee" ConflictDetection="CompareAllValues" OldValuesParameterFormatString="Original_{0}" DeleteMethod="DeleteEmployee" OnDeleted="ObjectDataSource1_Deleted" OnUpdated="ObjectDataSource1_Updated"> <DeleteParameters> <asp:Parameter Name="Original_ID" Type="Int32" /> <asp:Parameter Name="Original_Name" Type="String" /> <asp:Parameter Name="Original_Education" Type="String" /> </DeleteParameters> <UpdateParameters> <asp:Parameter Name="Original_ID" Type="Int32" /> <asp:Parameter Name="Original_Name" Type="String" /> <asp:Parameter Name="Original_Education" Type="String" /> <asp:Parameter Name="Name" Type="String" /> <asp:Parameter Name="Education" Type="String" /> </UpdateParameters> </asp:ObjectDataSource> </div> </form> </body> </html>
2-Код для доступа является
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) { if(e.Row.RowType == DataControlRowType.DataRow) { DropDownList drop = (DropDownList)GridView1.Rows[1].FindControl("DropDownList1"); } }
Что я уже пробовал:
я попытался получить к нему доступ в интернете.
GridView1_RowDataBound()с помощью этого метода ряд proparty быт вам нуль тоже
Richard MacCutchan
Используйте отладчик, чтобы увидеть, что находится внутри GridView1.Rows[1]
возможно, что GridView не был инициализирован.
Member 14479161
становится нулем тоже
Richard MacCutchan
Что это значит?
Member 14479161
null exeption для значения, которое я прикрепил к нему GridView1.Rows[1]
Richard MacCutchan
Мне все еще нет смысла пытаться понять, что это значит. Сделайте то, что я предложил вчера, и используйте свой отладчик, чтобы узнать, какой фактический элемент равен нулю. Затем работайте в обратном направлении, чтобы выяснить, почему он не был инициализирован.
Maciej Los
Попробуйте это (внутри GridView1_RowDataBound
метод):
DropDownList drop = (DropDownList)e.Row.FindControl("DropDownList1");
Дайте мне знать, если это будет полезно.
Member 14479161
становится нулем тоже