将选定的Gridview行数据放入数据绑定下拉列表

时间:2015-04-17 06:24:11

标签: c# asp.net

我使用此代码将选定的gridview行放入Label或textbox并且它们正常工作,但是当我选择在从sqldatasource加载数据的下拉列表中显示数据时,会产生此错误:

' ddlRPGroup'具有一个无效的SelectedValue,因为它在项目列表中不存在。

protected void grdTenant_SelectedIndexChanged(object sender, EventArgs e)
{
    GridViewRow row = grdTenant.SelectedRow;
    lblRPCode.Text  = row.Cells[1].Text;
    lblRP.Text   = row.Cells[2].Text;
    lblType.Text = row.Cells[3].Text;
    lblBusiness.Text  = row.Cells[4].Text;

    ddlRPGroup.SelectedValue = row.Cells[5].Text;
}

标记

<table border="0" class="tblEditTenant"  cellpadding="3">
     <tr>
        <td colspan ="4" style="font-weight: 700; font-size: medium;"><asp:Label ID="lblRP" runat="server" Text="Retail Partner"></asp:Label>- 
        <asp:Label ID="lblRPCode" runat="server" Text="RP Code"></asp:Label>  </td>                         
     </tr>
     <tr>
       <tr>
          <td>Type:</td>
          <td colspan ="3"><asp:Label ID="lblType" runat="server" Text="Type"></asp:Label></td>
       </tr>
      <tr>
          <td>Business:</td>
          <td colspan ="3"><asp:Label ID="lblBusiness" runat="server" Text="Business"></asp:Label></td>
      </tr>
      <tr>
          <td>RP Group:</td>
          <td colspan ="3">
               <asp:DropDownList ID="ddlRPGroup" runat="server" DataSourceID="SqlDataSource3" DataTextField="name" DataValueField="code"></asp:DropDownList>&nbsp;<asp:DropDownList ID="DropDownList1" runat="server">
               </asp:DropDownList>
          </td>                             
      </tr>
</table>

2 个答案:

答案 0 :(得分:1)

错误告诉您,您要在DropdownList中选择的值在列表中尚不存在。

如果此值已经存在于ddl中,则需要编辑ddl的DataSource以插入正确的值。 如果要先将所选值插入下拉列表然后选择它,请按以下步骤操作:

protected void grdTenant_SelectedIndexChanged(object sender, EventArgs e)
{
    GridViewRow row = grdTenant.SelectedRow;
    lblRPCode.Text  = row.Cells[1].Text;
    lblRP.Text   = row.Cells[2].Text;
    lblType.Text = row.Cells[3].Text;
    lblBusiness.Text  = row.Cells[4].Text;

    //new ListItem with Text and Value of cells[5] gets inserted into ddl
    ddlRPGroup.Items.Insert(0, new ListItem(row.Cells[5].Text,row.Cells[5].Text));
    ddlRPGroup.SelectedValue = row.Cells[5].Text;
}

如果该值已经在列表中,则需要编辑数据源以返回正确的值。

答案 1 :(得分:0)

已经找到了答案,以及导致错误的原因。

只需替换此行

ddlRPGroup.SelectedValue = row.Cells[5].Text;

用这个:

ddlRPGroup.SelectedItem.Text = row.Cells[5].Text;

它应该是selectItem.Text,因为selectedValue指向项目的代码而不是项目本身