2017-02-10 60 views
0

在ASP.Net的GridView的OnRowDataBoundevent我試圖填充部的DropDownList一行時,編輯將要顯示(ddlDepts)。爲什麼在Dropdownlist OnRowDataBound事件中沒有選擇一個項目?

下面的代碼是不是因爲DROPDOWNLIST工作是空的。

任何想法我做錯了什麼?

「// GridView的標記:

<asp:TemplateField HeaderText="Department" ItemStyle-Width = "150"> 
    <ItemTemplate> 
     <asp:Label ID = "lblDept" runat="server" Text='<%# Eval("deptName")%>'></asp:Label> 
     <asp:DropDownList ID="ddlDepts" runat="server" Visible = "false"> 
     </asp:DropDownList> 
    </ItemTemplate> 
    </asp:TemplateField> 

'' //的CodeFile

Protected Sub OnRowDataBound(ByVal sender As Object, ByVal e As GridViewRowEventArgs) 
    If e.Row.RowType = DataControlRowType.DataRow Then 
     Dim cmd As New SqlCommand("SELECT DISTINCT(DeptID,DeptName) FROM Departments") 
     Dim ddlDepts As DropDownList = TryCast(e.Row.FindControl("ddlDepts"), DropDownList) 
     ddlDepts.DataSource = Me.ExecuteQuery(cmd, "SELECT") 
     ddlDepts.DataTextField = "DeptID" 
     ddlDepts.DataValueField = "DeptName" 
     ddlDepts.DataBind() 
     Dim DeptName As ListItem = ddlDepts.Items.FindByValue("lblDept") 
     If DeptName IsNot Nothing Then 
      ddlDepts.SelectedValue = DeptName.Value 
     End If 
    End If 
End Sub 
+0

你在哪裏初始化到包含部門表的數據庫的連接? –

+0

可能愚蠢的問題,但你肯定你的OnRowDataBound事件實際上是發射呢? –

+0

@inquisitive_mindm很好的問題。我擁有了它,並開始修改代碼並將其刪除。它下面是: gvInPerson.DataSource =的GetData(CMD)和連接到DB在的getData()子定義。它沒有幫助。 大衛W,沒有這樣的事情愚蠢的問題,但不知道爲什麼它會雖然射擊。 – Tairoc

回答

0

不知道哪個SQL您使用的,但我想查詢可能是不正確的。

在MS SQL你會使用這樣的:

SELECT DISTINCT DeptID, DeptName FROM Departments 

而且我沒有的MySQL(或其他數據庫)的知識,但quick search似乎表明它使用相同的方法distinct

相關問題