我加載gridview的列表中存在,在GridView中有一個編輯和刪除按鈕是無效的。如何解決「‘ddlAssignedTo’具有的SelectedValue,因爲它不在項目
我點擊編輯和我得到「ddlAssignedTo' has a SelectedValue which is invalid because it does not exist in the list of items. Parameter name: value
我知道我得到這個錯誤,因爲值爲ddlAssignedTo
爲空 - 在ddlAssignedTo的db上沒有任何東西存在。
我只是想更新當前值。
所以,我的問題是這樣的,如果當前值爲空,我該如何爲ddlAssignedTo分配一個默認值,以便如果db上當前不存在任何值,默認值會佔上風?
下面是一些代碼:
標記:
<asp:TemplateField HeaderText="Assigned To">
<EditItemTemplate>
<asp:DropDownList ID="ddlAssignedTo" runat="server"
DataSourceID="SubjectDataSource"
DataTextField="fullname" DataValueField="empl_Id"
SelectedValue='<%# Bind("AssignedTo") %>'>
<asp:ListItem Value="">--Select Name--</asp:ListItem>
</asp:DropDownList>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="lblAssigned" runat="server"
Text='<% #Bind("fullname") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
SelectCommand="SELECT Distinct [rownum],[reqnum], AssignedTo, (empl_first + ' ' + empl_last) fullname, [reqrecdate], [reqrecfrom], [skillsets], [application], [hoursperweek], [fromdate], [todate], [status], [statusupdate], [statusupby] FROM [requestinfo] left join employee on requestInfo.AssignedTo=employee.empl_id ORDER BY [reqnum]"
UpdateCommand="INSERT INTO [requestinfo] ([reqnum], [reqrecdate], [reqrecfrom], [skillsets], [application], [hoursperweek], [fromdate], [todate], [status], [statusupdate], [statusupby],[AssignedTo]) VALUES (@reqnum, @reqrecdate, @reqrecfrom, @skillsets, @application, @hoursperweek, @fromdate, @todate, @status, @statusupdate, @statusupby,@empl_id)">
<DeleteParameters>
<asp:Parameter Name="rownum" Type="Int32" />
</DeleteParameters>
<UpdateParameters>
<asp:Parameter Name="reqnum" Type="String" />
<asp:Parameter DbType="DateTime" Name="reqrecdate" />
<asp:Parameter Name="reqrecfrom" Type="String" />
<asp:Parameter Name="skillsets" Type="String" />
<asp:Parameter Name="application" Type="String" />
<asp:Parameter Name="hoursperweek" Type="Int32" />
<asp:Parameter DbType="DateTime" Name="fromdate" />
<asp:Parameter DbType="DateTime" Name="todate" />
<asp:Parameter Name="status" Type="String" />
<asp:Parameter DbType="DateTime" Name="statusupdate" />
<asp:Parameter Name="statusupby" Type="String" />
<asp:Parameter Name="empl_id" Type="String" />
<asp:Parameter Name="rownum" Type="Int32" />
</UpdateParameters>
</asp:SqlDataSource>
<asp:SqlDataSource ID="SubjectDataSource" runat="server"
ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
SelectCommand="SELECT empl_id, (empl_first + ' ' + empl_last) fullname FROM dbo.Employee order by empl_last">
</asp:SqlDataSource>
代碼隱藏:
Protected Sub GridView1_RowUpdating(ByVal sender As Object, ByVal e As GridViewUpdateEventArgs) Handles GridView1.RowUpdating
Dim dd As DropDownList = DirectCast(GridView1.Rows(e.RowIndex).FindControl("ddlstatus"), DropDownList)
e.NewValues("status") = dd.SelectedItem.Text
Dim ddAssigned As DropDownList = DirectCast(GridView1.Rows(e.RowIndex).FindControl("ddlAssignedTo"), DropDownList)
If String.IsNullOrEmpty(ddAssigned.SelectedValue) Then
ddAssigned.SelectedValue = "shhhh"
Else
e.NewValues("empl_id") = ddAssigned.SelectedValue
End If
SqlDataSource1.DataBind()
End Sub
我不明白你爲什麼在代碼中有'SelectedValue ='<%#綁定(「AssignedTo」)%>''。當你刪除它會發生什麼? – Emre 2013-05-12 13:13:55
只要錯誤消失,並且修改成功,就可以工作。 唯一的問題是,如果我需要將AssignedTo的當前值替換爲另一個值,那麼當單擊編輯時,我需要查看當前值。現在,它顯示空白。儘管您可以從下拉列表中選擇它,但在編輯模式下將其預選爲預選會很好。 – Kenny 2013-05-12 19:51:48
嘗試在您的edittemplate中添加另一個標籤以查看當前值''>' –
Emre
2013-05-12 20:25:32