0

グリッドビューのドロップダウンのソース コード

     <asp:TemplateField HeaderText="LocationServerName" HeaderStyle-BackColor="#C0C0C0" HeaderStyle-BorderColor="Black">
    <ItemTemplate>
    <asp:TextBox ID="txtLocationServerName" runat="server" OnTextChanged="txtLocationServerName_TextChanged"  ReadOnly="true" Text='<%# Eval("LocationServerName")%>' > </asp:TextBox>
     </ItemTemplate>                  
    </asp:TemplateField>
    <asp:TemplateField HeaderText="ProjectModifiedBy" HeaderStyle-BackColor="#C0C0C0" HeaderStyle-BorderColor="Black">
    <ItemTemplate>
     <asp:DropDownList ID="ddlProjectModifiedBy" Width="99%" runat="server" Enabled="false" 
            onselectedindexchanged="ddlProjectModifiedBy_SelectedIndexChanged" AutoPostBack="true" >
      </asp:DropDownList>
       </ItemTemplate> 
        </asp:TemplateField>

ドロップダウンをグリッドビューにバインドするコードですが、データをデータベースに保存した後、グリッドビューはグリッドビューでドロップダウンの選択された値を表示しません。これを解決するにはどうすればよいですか?

 Protected Sub ddlProjectModifiedBy_RowDataBound(ByVal sender As Object, ByVal e As GridViewRowEventArgs)

    If e.Row.RowType = DataControlRowType.DataRow Then
    Dim retDt = New DataTable
    Dim strConnString As String = ConfigurationManager.ConnectionStrings("conString").ConnectionString
    Dim sqlQuery As String

    sqlQuery = "Sp_SelectEmpName"
    Dim con As New SqlConnection(strConnString)
    Dim cmd As New SqlCommand(sqlQuery, con)
    Dim da = New SqlDataAdapter(cmd)
    cmd.CommandType = CommandType.StoredProcedure
    da.Fill(retDt)
    Dim dropdown = TryCast(e.Row.FindControl("ddlProjectModifiedBy"), DropDownList)

    dropDown.DataSource = retDt
    dropDown.DataValueField = "EmpId"
    dropDown.DataTextField = "EmpName"
    dropdown.DataBind()

    End If
End Sub
4

2 に答える 2

0
<ItemTemplate>
  <asp:DropDownList ID="ddlProjectModifiedBy" Width="99%" runat="server" Enabled="false" 
  onselectedindexchanged="ddlProjectModifiedBy_SelectedIndexChanged" AutoPostBack="true" >
  </asp:DropDownList>
</ItemTemplate> 

コードに編集テンプレートを追加する

<EditTemplate>
        <asp:DropDownList ID="ddlProjectModifiedBy" Width="99%" runat="server" Enabled="false" 
  onselectedindexchanged="ddlProjectModifiedBy_SelectedIndexChanged" AutoPostBack="true" >
  </asp:DropDownList>
</EditTemplate> 

このコードを RowDataBound イベントに追加します

If e.Row.RowType = DataControlRowType.DataRow AndAlso dgrd_WWWH_How.EditIndex = e.Row.RowIndex Then
  Dim ddlresp As DropDownList = CType(e.Row.FindControl("ddlResp"), DropDownList)
    'Here you get your current value from db to store any string   
     Dim lblid as Label = CType(e.Row.Fincontrol("id"),Label)
    strresp = db.getvalue(select respval from tbl where id =lblid)
   ddlresp.Items.FindByText(strresp).Selected = True
End If
于 2013-11-15T11:25:02.007 に答える