我有一个带有以下代码的gridview:
<asp:TemplateField HeaderText="Column1">
<EditItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("Column1") %>'></asp:Label>
</EditItemTemplate>
<ItemTemplate>
<asp:DropDownList ID="DropDownList1" runat="server" Width="125px">
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
我想绑定一个sql语句来填充下拉列表...
select Column1 from Table1
我会通过后面的代码执行此操作吗?任何信息表示赞赏?同样基于用户使用此下拉列表进行的选择,我想用相应的数据填充下一列(column2)...也需要帮助......
我对模板字段不熟悉,我可以在代码后面和通过html使用gridview绑定,但是templatefields就像另一种语言......我很感激帮助!
答案 0 :(得分:0)
您的问题的答案有几个部分,我做了一些假设(您使用Visual Studio作为IDE,您可以使用VB作为代码隐藏语言):< / p>
我想绑定一个sql语句来填充下拉列表...
您可以在代码隐藏或Visual Studio GUI中执行此操作。虽然您可以使用下拉列表的boundfield,但templatefield最终会为您提供更大的灵活性。我在模板字段(here)上阅读,因为使用Gridview进行基本数据显示之外的任何事情都是你的朋友。使用GUI,选择下拉列表应该会在右上角显示一个小箭头,允许您创建数据连接和数据源以绑定到下拉列表。
同样基于用户使用此下拉列表进行的选择,我 想要用相应的数据填充下一列(column2)
这有点复杂,因为您需要在下拉列表中触发PostBack(使用AutoPostBack),处理Dropdownlist的SelectedIndexChanged事件,在第二列中找到要更新的控件,并更新该控件基于Dropdownlist中的selectedindex / item / value。有几种方法可以做到这一点,但这是我发现的最快的(使用asp.net winforms)。我使用SQL Adventureworks数据库,使用employeeID在第1列的模板字段中填充下拉列表,并使用所选的employeeID使用该employeeID的managerID填充第2列中的标签。
<asp:GridView ID="GridView1" runat="server" DataSourceID="SqlDataSource1"
EnableModelValidation="True" AutoGenerateColumns="False"
DataKeyNames="EmployeeID">
<Columns>
<asp:BoundField DataField="EmployeeID" HeaderText="EmployeeID"
InsertVisible="False" ReadOnly="True" SortExpression="EmployeeID" />
<asp:TemplateField>
<ItemTemplate>
Select EmployeeID
<asp:DropDownList ID="ddEmpID" runat="server" OnSelectedIndexChanged="ddEmpID_SelectedIndexChanged"
DataSourceID="SqlDataSource1" DataTextField="EmployeeID"
DataValueField="EmployeeID" AutoPostBack="True">
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:Label ID="labManagerID" runat="server" Text="ManagerID"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="Data Source=MyServer\Instance;Initial Catalog=AdventureWorks;Integrated Security=True"
ProviderName="System.Data.SqlClient"
SelectCommand="SELECT TOP(10) EmployeeID, ManagerID FROM HumanResources.Employee">
</asp:SqlDataSource>
来自代码隐藏的SelectedIndexChanged事件:
Protected Sub ddEmpID_SelectedIndexChanged(sender As Object, e As EventArgs)
Dim myDDList As DropDownList = CType(sender, DropDownList)
Dim gvRow As GridViewRow = CType(myDDList.NamingContainer, GridViewRow)
Dim myLabel As Label = CType(gvRow.FindControl("labManagerID"), Label)
' Create your sql query here to populate a data object and assign values throughout your row
Dim myConnection As SqlConnection = New SqlConnection("Data Source=MyServer\Instance;Initial Catalog=AdventureWorks;Integrated Security=True")
Dim myCmd As SqlCommand = New SqlCommand("Select ManagerID FROM HumanResources.Employee WHERE EmployeeID='" + myDDList.SelectedValue + "'", myConnection)
If myConnection.State = ConnectionState.Closed Then myConnection.Open()
myLabel.Text = myCmd.ExecuteScalar
If myConnection.State = ConnectionState.Open Then myConnection.Close()
End Sub
由于使用Gridview有时候是一种自我鞭挞的练习,我建议手头有一些好的walkthrough tutorials:
-J