datagrid模板中选择第一个dropdownlist后根据第一个的值绑定第二个dropdownlist模板的值

a791223 2004-08-23 10:53:07
想实现这样的功能,选择第一个dropdownlist里的值,根据它的值绑定第二个dropdownlist模板的值

第一个dropdownlist绑定的代码如下:
<ItemTemplate>
<asp:DropDownList id="gsmc" runat="server" Width="138px" DataSource="<%# yggs() %>" DataTextField="gsjc" DataValueField="gsbh"></asp:DropDownList>
</ItemTemplate>

Public Function yggs()

Dim strsql As String = "select gsjc,gsbh from ld_gs where gslx=0 order by gsbh"
objadapter.SelectCommand = New OracleCommand(strsql, objconnection)
objadapter.Fill(objdataset, "tmpgs")


Dim pubs As New DataSet
Dim comTable As New DataTable("comTable")
Dim comgsbh As New DataColumn("gsbh")
Dim comgsjc As New DataColumn("gsjc")

Dim comRow As DataRow
comTable.Columns.Add(comgsbh)
comTable.Columns.Add(comgsjc)


Dim i As Integer
Dim l As Integer
Dim count As Integer = 0
Dim x As Integer
Dim y As Integer

For x = 0 To objdataset.Tables("tmpgs").Rows.Count

comRow = comTable.NewRow

If x = 0 Then
comRow("gsbh") = ""

Else

comRow("gsbh") = objdataset.Tables("tmpgs").Rows(x - 1).Item("gsbh")
comRow("gsjc") = objdataset.Tables("tmpgs").Rows(x - 1).Item("gsjc")


End If


comTable.Rows.Add(comRow)
Next

pubs.Tables.Add(comTable)
Return pubs.Tables("comTable").DefaultView



End Function

...全文
304 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
xulovewei 2004-09-01
  • 打赏
  • 举报
回复
用两个模板列放置两个DropDownlist,将第一个的AutoPostBack设为True,先用FindControl方法找到第一个DropDownList,绑定数据库,再找到第二个DropDownList根据第一个的选择,将相应的Item设为True,这两个事件都在_ItemDataBound里写
rickjelly2004 2004-08-31
  • 打赏
  • 举报
回复
pageload :
For i = 0 To n
AddHandler CType(dgListArticle.Items(i).Cells(5).FindControl("DropDownList1"), DropDownList).SelectedIndexChanged, AddressOf DropDownList1_selectchange
Next



private sub DropDownList1_selectchange(ByVal sender As Object, ByVal e As System.EventArgs)
binddrop2(CType(sender, DropDownList).SelectedItem.Text)
end sub
rickjelly2004 2004-08-31
  • 打赏
  • 举报
回复
我写过一个,不过我在PAGELOAD中写的,
coffeewar 2004-08-31
  • 打赏
  • 举报
回复
private void dep2_SelectedIndexChanged(object sender, EventArgs e)
{
....
}
coffeewar 2004-08-31
  • 打赏
  • 举报
回复
sorry:

if(e.Item .ItemType ==ListItemType.Item )
===============>
if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType ==ListItemType.AlternatingItem)


coffeewar 2004-08-31
  • 打赏
  • 举报
回复
在 ItemCreated 事件里写:
if(e.Item .ItemType ==ListItemType.Header )
{
DropDownList dep=(DropDownList)e.Item .FindControl ("dept");
dep.SelectedIndexChanged+=new EventHandler(dep2_SelectedIndexChanged);
tomatowitch 2004-08-31
  • 打赏
  • 举报
回复
我也很想知道 怎么触发这个事件? 在datagrid里面怎么触发
jamzh 2004-08-31
  • 打赏
  • 举报
回复
用javascript也是可以的!
coffeewar 2004-08-31
  • 打赏
  • 举报
回复
又写错了
if(e.Item .ItemType ==ListItemType.Header )
改成
if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType ==ListItemType.AlternatingItem)


我只会 C# ,VB不懂
coffeewar 2004-08-31
  • 打赏
  • 举报
回复
这样的功能我具体没有实现过,只是有个思路不知道可不可行。
1.在 DataGrid的 ItemCreated 事件中为每行的 dropDownList1 和 dropDownList2 的 SelectedIndexChanged 事件 委托,并且绑定 dropDownList1。
在 ItemCreated 事件里写:
if(e.Item .ItemType ==ListItemType.Header )
{
DropDownList dropDownList1=(DropDownList)e.Item .FindControl ("dropDownList1");
dropDownList1.SelectedIndexChanged+=new EventHandler(dropDownList1_SelectedIndexChanged);


DropDownList dropDownList2=(DropDownList)e.Item .FindControl ("dropDownList2");
dropDownList2.SelectedIndexChanged+=new EventHandler(dropDownList2_SelectedIndexChanged);

2.在 dropDownList1 的 SelectedIndexChanged事件里面绑定相应行的 dropDownList1

至于怎么样将 dropDownList1 的选择的值传到 dropDownList2 可以用 dropDownList1.Parent.Parent 找到相应的行即 DataGrid.Item,知道了 Item 即可用 FindControl("ID")找到你想要的任何 web 控件。

xzhy80 2004-08-31
  • 打赏
  • 举报
回复
Private Sub Dg_ItemDataBound(ByVal sender As System.Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs)

If e.Item.ItemType = ListItemType.AlternatingItem Or e.Item.ItemType = ListItemType.Item Then ' Or e.Item.ItemType = ListItemType.EditItem Then
'************************************ checkbox
Dim mycheckbox As CheckBox
mycheckbox = e.Item.FindControl("tcb")
Response.Write(mycheckbox.Text)
If mycheckbox.Checked Then
mycheckbox.Text = "Male"
Else
mycheckbox.Text = "Female"
End If
'************************************
'******************************************* DropDownList
Dim myLst As DropDownList = CType(e.Item.FindControl("tddl"), DropDownList)
Dim myRow As DataRowView = CType(e.Item.DataItem, DataRowView)
Dim lbl As RadioButton = CType(e.Item.FindControl("rdo"), RadioButton)

myLst.DataTextField = "birthday"
myLst.DataValueField = "birthday"

myLst.DataSource = GetRoles(lbl.Text)

myLst.DataBind()
'*******************************************
'****************** labelradiobutton
Dim myLbl As Label
myLbl = e.Item.FindControl("lblRad")
myLbl.Text = "<input type=radio name='myradiogroup' value=" & e.Item.ItemType & ">"
'******************

End If
'********************************* We only want to run this code for items in edit mode
If (e.Item.ItemType = ListItemType.EditItem) Then
'*********************
'Locate our DropDownList
Dim myList As DropDownList = CType(e.Item.FindControl("Eddl"), DropDownList)

'Grab the current row of data - we need that so we know what value to select in the ddl
Dim myRow As DataRowView = CType(e.Item.DataItem, DataRowView)

'Set the Text and Value field for our DropDownList
myList.DataTextField = "birthday"
myList.DataValueField = "birthday"
'Fill our DropDownList with the standard list of data
myList.DataSource = GetRole()

Dim aaaa As Integer = myRow.DataView.Count()

myList.DataBind()
myList.Items.Add("")
myList.SelectedIndex = (aaaa - 1)
'**********************

'****************** labelradiobutton
Dim myLbl As Label
myLbl = e.Item.FindControl("lblRad")
myLbl.Text = "<input type=radio name='myradiogroup' value=" & "e.Item.ItemType" & ">"
'******************

'************************************ checkbox
Dim mycheckbox As CheckBox
mycheckbox = e.Item.FindControl("tcb")
Response.Write(mycheckbox.Text)
If mycheckbox.Checked Then
mycheckbox.Text = "Male"
Else
mycheckbox.Text = "Female"
End If
'************************************

End If
'*********************************

End Sub
Public Function GetRole() As DataView
StrSql = "SELECT "
StrSql = StrSql & "birthday "
StrSql = StrSql & "FROM MTXL "
Dim Comm As OleDbDataAdapter = New OleDbDataAdapter(StrSql, Str)
Dim ds As DataSet = New DataSet()
Comm.Fill(ds, "Roles")
Return ds.Tables("Roles").DefaultView
End Function

Public Function GetRoles(ByVal aaa As String) As DataView
StrSql = "SELECT "
StrSql = StrSql & "birthday "
StrSql = StrSql & "FROM MTXL "
StrSql = StrSql & "where id='" & aaa & "'"
Dim Comm As OleDbDataAdapter = New OleDbDataAdapter(StrSql, Str)
Dim ds As DataSet = New DataSet()
Comm.Fill(ds, "Roles")
Return ds.Tables("Roles").DefaultView
End Function
tomatowitch 2004-08-31
  • 打赏
  • 举报
回复
还是不明白 coffeewar(苦咖啡)的 private void dep2_SelectedIndexChanged(object sender, EventArgs e) 中
怎么把 第一个dropdownlist 的参数传递给第二个 dropdownlist呢
a791223 2004-08-25
  • 打赏
  • 举报
回复
有会吗
a791223 2004-08-25
  • 打赏
  • 举报
回复
up
a791223 2004-08-24
  • 打赏
  • 举报
回复
但是第一个dropdownlist的触发事件如何写呢。没有触发事件无法让第二个绑定dropdownlist绑定数据。
dropdownlist是datagrid里的模板
wangrenda 2004-08-23
  • 打赏
  • 举报
回复
在DataBound中实现
和平时用的没有两样.
就是注意实例化你的DropdwonList

62,244

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧