我无法确定导致编辑命令失败的问题
GridView代码
<asp:GridView ID="GridView1" runat="server" AllowPaging="True"
AllowSorting="True" AutoGenerateColumns="False" CellPadding="4"
DataKeyNames="Requestid" DataSourceID="SqlDataSource1" ForeColor="#333333"
GridLines="None" Height="321px" Width="604px">
<AlternatingRowStyle BackColor="White" />
<Columns>
<asp:CommandField ShowEditButton="True" UpdateText="Submit" />
<asp:BoundField DataField="Requestid" HeaderText="Requestid" ReadOnly="True"
SortExpression="Requestid" />
<asp:BoundField DataField="Receiveddate" HeaderText="Receiveddate"
SortExpression="Receiveddate" />
<asp:BoundField DataField="Ctname" HeaderText="Ctname"
SortExpression="Ctname" />
<asp:TemplateField HeaderText="Requestor" SortExpression="Requestor">
<EditItemTemplate>
<asp:DropDownList ID="DropDownList1" runat="server"
DataSourceID="SqlDataSource2" DataTextField="analystname"
DataValueField="contact_id" SelectedValue='<%# Bind("Requestor") %>'>
</asp:DropDownList>
<asp:SqlDataSource ID="SqlDataSource2" runat="server"
ConnectionString="<%$ ConnectionStrings:Customers %>" SelectCommand="SELECT [contact_id], [first_name]+ space(1)+ [last_name] as analystname FROM [contact]
order by contact_id"></asp:SqlDataSource>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("Requestor") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<EditRowStyle BackColor="#CC3300" />
<FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="#CBB06D" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
<RowStyle BackColor="#EFF3FB" />
<SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
<SortedAscendingCellStyle BackColor="#F5F7FB" />
<SortedAscendingHeaderStyle BackColor="#6D95E1" />
<SortedDescendingCellStyle BackColor="#E9EBEF" />
<SortedDescendingHeaderStyle BackColor="#4870BE" />
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:Customers %>" SelectCommand="SELECT RR.Requestid,Convert(varchar(20),RR.Receiveddate,100) as Receiveddate,RR.Ctname,C.First_Name +Space(1) + C.Last_NAME as Requestor from report_request_draft RR inner join Contact C on RR.requestor = C.contact_id
where clonedfromid is not null"
UpdateCommand="UPDATE [REPORT_REQUEST_DRAFT] SET [REQUESTOR] = @Requestor WHERE [requestid] = @requestid">
</asp:SqlDataSource>
当我点击编辑命令按钮时,它会给我以下错误
错误
'DropDownList1'有一个SelectedValue,它是无效的,因为它在项目列表中不存在。 参数名称:value 描述:执行当前Web请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。
异常详细信息:System.ArgumentOutOfRangeException:'DropDownList1'具有SelectedValue,该ListValue无效,因为它在项列表中不存在。 参数名称:值
答案 0 :(得分:0)
DropDownList不能以这种方式绑定。通过使用SelectedValue
绑定,它需要在GridView绑定之前绑定DropDownList,但这是逻辑上不可能的,因为DropDownList无法绑定,直到GridView完成其绑定。您应该将此逻辑放在RowDataBound
事件后面的代码中。此时,您应手动绑定DropDownList,然后设置其SelectedValue
属性。
答案 1 :(得分:0)
考虑以下链接,它将帮助您解决问题,还会向您展示如何在网格视图中完美地绑定 EditItemTemplet 。我强制您使用this链接以更好地理解网格视图。