所以我有一个下拉列表,当我的gridview处于编辑模式时出现。问题是,当我按下更新按钮时,我得到一个空引用错误。这是因为出于某种原因,更新事件声称GridView中不存在下拉列表。同样可以说,当我看着标记。但是,当我运行该页面并按下编辑按钮时,我的下拉列表出现没有问题。谁能告诉我为什么会出现这种情况?无法在gridview中找到下拉列表
这是我迄今为止用于更新事件的代码隐藏:
protected void GridViewHolder_Updating(object sender, GridViewUpdateEventArgs e)
{
int machineid1;
string machineid;
string machineTypeid;
string machineModelid;
GridViewRow row = (GridViewRow)GridViewHolder.Rows[e.RowIndex];
machineid = ((Label)(row.Cells[0].Controls[1])).Text;
machineid1 = Convert.ToInt32(machineid);
machineTypeid = ((DropDownList)(row.Cells[3].FindControl("MachineTypeDropDown"))).SelectedValue;
machineModelid = ((DropDownList)(row.Cells[4].Controls[1])).SelectedValue;
//inputsService.UpdateMachineTypes(machineid, machineTypeid);
//inputsService.UpdateMachineModels(machineid, machineModelid);
}
下面你会发现标记和的.ascx gridview的标记:
viewsource:
<th scope="col">Site Name</th><th scope="col">Machine Name</th><th scope="col">Machine Type</th><th scope="col">Machine Model</th><th scope="col"> </th>
</tr><tr align="center" style="background-color:Transparent;">
<td>SACRAMENTO</td><td>DC04</td><td>
<span id="AssignMachineTypesAndModels_userControl_GridViewHolder_ctl02_MachineTypeLabel">empty</span>
</td><td>
<span id="AssignMachineTypesAndModels_userControl_GridViewHolder_ctl02_MachineModelLabel">empty</span>
</td><td align="center"><input type="button" value="Edit" onclick="javascript:__doPostBack('AssignMachineTypesAndModels_userControl$GridViewHolder','Edit$0')" /></td>
</tr><tr align="center" style="background-color:Transparent;">
<td>SACRAMENTO</td><td>DC1</td><td>
<span id="AssignMachineTypesAndModels_userControl_GridViewHolder_ctl03_MachineTypeLabel">empty</span>
</td><td>
<span id="AssignMachineTypesAndModels_userControl_GridViewHolder_ctl03_MachineModelLabel">empty</span>
</td><td align="center"><input type="button" value="Edit" onclick="javascript:__doPostBack('AssignMachineTypesAndModels_userControl$GridViewHolder','Edit$1')" /></td>
</tr><tr align="center" style="background-color:Transparent;">
<td>SACRAMENTO</td><td>MPS01</td><td>
<span id="AssignMachineTypesAndModels_userControl_GridViewHolder_ctl04_MachineTypeLabel">empty</span>
</td><td>
<span id="AssignMachineTypesAndModels_userControl_GridViewHolder_ctl04_MachineModelLabel">empty</span>
</td><td align="center"><input type="button" value="Edit" onclick="javascript:__doPostBack('AssignMachineTypesAndModels_userControl$GridViewHolder','Edit$2')" /></td>
</tr><tr align="center" style="background-color:Transparent;">
<td>SACRAMENTO</td><td>MSE01</td><td>
<span id="AssignMachineTypesAndModels_userControl_GridViewHolder_ctl05_MachineTypeLabel">empty</span>
</td><td>
<span id="AssignMachineTypesAndModels_userControl_GridViewHolder_ctl05_MachineModelLabel">empty</span>
</td><td align="center"><input type="button" value="Edit" onclick="javascript:__doPostBack('AssignMachineTypesAndModels_userControl$GridViewHolder','Edit$3')" /></td>
gridview标记:
<Columns>
<asp:TemplateField HeaderText="ID"
SortExpression="ID"
Visible="False">
<ItemTemplate>
<asp:Label ID="Label1"
runat="server"
Text='<%# Bind("ID") %>'
Visible="false">
</asp:Label>
</ItemTemplate>
<EditItemTemplate>
</EditItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="SiteName"
HeaderText="Site Name"
SortExpression="SiteName"
ReadOnly="true" />
<asp:BoundField DataField="Name"
HeaderText="Machine Name"
ReadOnly="true"
SortExpression="Name" />
<asp:TemplateField HeaderText="Machine Type"
SortExpression="MachineType">
<ItemTemplate>
<asp:Label ID="MachineTypeLabel"
runat="server"
Text='<%# Bind("MachineType") %>'>
</asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList ID="MachineTypeDropDown"
runat="server"
AppendDataBoundItems="True"
Height="21px"
Width="217px"
DataSourceID="GetMachineType"
DataTextField="Name"
DataValueField="ID">
<asp:ListItem Enabled="true"
Text="Select a Machine Type."
Value="NULL">
</asp:ListItem>
</asp:DropDownList>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Machine Model" SortExpression="MachineModel">
<ItemTemplate>
<asp:Label ID="MachineModelLabel"
runat="server"
Text='<%# Bind("MachineModel") %>'>
</asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList ID="MachineModelDropDown"
runat="server"
AppendDataBoundItems="True"
Height="21px" Width="217px"
DataSourceID="GetMachineModel"
DataTextField="Name"
DataValueField="ID">
<asp:ListItem Enabled="true"
Text="Select a Machine Model."
Value="NULL">
</asp:ListItem>
</asp:DropDownList>
</EditItemTemplate>
</asp:TemplateField>
<asp:CommandField ButtonType="Button"
ShowEditButton="True"
CausesValidation="false" >
<ItemStyle HorizontalAlign="Center"
Wrap="True" />
</asp:CommandField>
</Columns>
任何帮助或建议,不胜感激。
谢谢
为什么您的GridView在会话中? 'GridView gv =(GridView)Session [“MachineTable”];' –
我在试图调试这个问题时使用它,希望看到我的代码进入我的代码,然后分解控件中的位置以尝试找到下拉列表在哪里。 – James213