所以我有一個下拉列表,當我的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