獲得答案的一半戰鬥就是知道如何提出問題。我不確定我是否做得很好,但這是我最好的選擇。如何綁定GridView中的DropDownList與gridview中的數據NOT
我想綁定一個ddl,而不是來自gridview本身的gridview中的數據。這是在EditItemTemplate中。這樣做的目的是讓用戶從查找存儲過程開始選擇一個值和一系列其他值。
我會在這裏提到,我已經成功地完成了這之前,但使用ObjectDataSource。我試圖避免這一次,並完全從後面的代碼完成,然後將其移至數據層。
這裏是我迄今爲止...
<asp:GridView ID="usersGrid" runat="server"
DataKeyNames="userID"
AutoGenerateColumns="false" Width="580"
OnRowUpdating="usersGrid_RowUpdating"
OnRowEditing="usersGrid_RowEditing"
OnRowCancelingEdit="usersGrid_RowCancelingEdit" OnRowDeleting="usersGrid_RowDeleting"
>
...
<EditItemTemplate>
<div class="gridName">
<asp:TextBox ID="txtFirstName" Text='<%#Eval("firstName") %>' runat="server" Width="95" />
</div>
<div class="gridName">
<asp:TextBox ID="txtLastName" Text='<%#Eval("lastName") %>' runat="server" Width="95" />
</div>
<div class="gridEmail">
<asp:TextBox ID="txtEmail" Text='<%#Eval("email") %>' runat="server" Width="245" />
</div>
<div class="gridName">
<asp:DropDownList ID="ddl_GetLists"
DataSourceID="GetListData()"
AppendDataBoundItems="true"
DataValueField="listID"
DataTextField="listName"
SelectedValue='<%#Bind("listID") %>'
runat="server"
>
</asp:DropDownList>
</div>
</EditItemTemplate>
....
Protected Sub usersGrid_RowEditing(ByVal sender As Object, ByVal e As GridViewEditEventArgs)
usersGrid.EditIndex = e.NewEditIndex
BindData()
End Sub
....
Private Sub BindData()
Dim conn As New SqlConnection(connectionString)
Dim ad As New SqlDataAdapter("MAINT_DIST_GET_USERS", conn)
Dim ds As New DataSet()
ad.Fill(ds)
GetListData()
usersGrid.DataSource = ds
usersGrid.DataBind()
End Sub
我包括了最後兩個以及其他我嘗試過但失敗的方法。
...
Protected Sub usersGrid_RowDataBound(ByVal sender As Object, ByVal e As GridViewRowEventArgs)
If e.Row.RowState = DataControlRowState.Edit Then
Dim ddl As DropDownList = DirectCast(e.Row.FindControl("ddl_GetLists"), DropDownList)
Dim conn As New SqlConnection(connectionString)
Dim ad As New SqlDataAdapter("MAINT_DIST_GET_LISTS", conn)
Dim ds As New DataSet()
ad.Fill(ds)
ddl.DataSource = ds
ddl.DataBind()
End If
End Sub
Public Function BindDropdown() As DataSet
Dim conn As New SqlConnection(connectionString)
Dim ad As New SqlDataAdapter("MAINT_DIST_GET_LISTS", conn)
Dim ds As New DataSet()
ad.Fill(ds)
ddl_GetLists.DataSource = ds
ddl_GetLists.DataBind()
End Function
我還會問,爲什麼在最後的功能,爲什麼控制,ddl_GetLists,不承認呢?在網格內部,它從設計師處消失,但在網格外部再次出現。
謝謝大家的幫助。
我已經成功地完成了過去使用的ObjectDataSource,但我想這樣做類似這樣的東西僅限於此時的代碼。這可能嗎? –
是的,絕對。給我一秒鐘,我會更新我的答案。 –
關於ConnectionStrings屬性。我已分配給追加的應用使用appSettings中的一個鍵,而不是來自配置文件的正常connectionstring屬性。有沒有辦法從sqldatasource調用它? –