在datagrid中某列插入dropdownlist,dropdownlist数据列表根据相关字段不同绑定不同的数据信息。请问当我点击每一行的dropdownlist时,怎么根据所选择项跳转到相应的操作界面?
解决方案 »
- $("#" + clickids).wBox is not a function 报错,求救!!!
- 谁弄过dznt
- 输入用户名后, ajax验证用户是否已经存在,您们是如何实现的呢?》
- 关于GridView的问题,高手请帮忙
- 用ITextSharp将GridView的内容导出到PDF时,如何能够让列根据数据来自动调整列宽?
- ajax刷新的问题,好几天了,还没搞定
- 读取数据库中非必填字段出错,为空
- 怎样通过代码实现关闭当前窗口?
- 为什么我的不能进行排序,请大家帮我看一下。谢谢。
- 在2k下显示不了button等控件,只能显示lable?怎么办?
- 关于文本框输入问题
- 怎么实现自动求和的效果??我没分了,真麻烦大家了~~~
http://codebetter.com/blogs/eric.wise/archive/2005/07/18/129344.aspx
Private Sub dgrAddresses_ItemCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles dgrAddresses.ItemCreated
If e.Item.ItemType = ListItemType.EditItem Then
AddHandler CType(e.Item.FindControl("ddlState"), DropDownList).SelectedIndexChanged, AddressOf state_selectedIndexChanged
End If If e.Item.ItemType = ListItemType.Footer Then
AddHandler CType(e.Item.FindControl("ddlAddState"), DropDownList).SelectedIndexChanged, AddressOf addState_selectedIndexChanged
End If
End Sub
ASP.NET DEMO 14: 如何在 GridView/DataGrid 模板列中使用自动回发的 CheckBox/DropDownList
http://www.cnblogs.com/Jinglecat/archive/2007/07/29/835817.html
// code snippets C# style
// .aspx
<asp:TemplateColumn>
<ItemTemplate>
<asp:DropDownList ID="drpItem" runat="server" OnSelectedIndexChanged="drpItem2_SelectedIndexChanged" AutoPostBack="true">
<asp:ListItem></asp:ListItem>
<asp:ListItem Value="red">red</asp:ListItem>
<asp:ListItem Value="green">green</asp:ListItem>
<asp:ListItem Value="orange">orange</asp:ListItem>
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateColumn>// .aspx.cs
protected void drpItem2_SelectedIndexChanged(object sender, EventArgs e)
{
DropDownList drp = sender as DropDownList; // 触发事件的 DropDownList
DataGridItem row = drp.NamingContainer as DataGridItem;
// row.Style.Add(HtmlTextWriterStyle.BackgroundColor, drp.SelectedValue);
// Response.Write(String.Format("选中第 {0} 行", row.ItemIndex + 1));
// more codes
// Label lbl = row.FindControl("MyLabelID") as Label;
// string str = row.Cells[0].Text;
// ...
Response.Redirect("target.aspx");
}
{
DropDownList drp = sender as DropDownList; // 触发事件的 DropDownList
string selectedValue = drp.SelectedValue; // !!!!!
// ....
DataGridItem row = drp.NamingContainer as DataGridItem;
{
DropDownList drp = (DropDownList)sender;
if(drp != null)
{
string val=drp.SelectedValue.Trim().ToString();
this.Label4.Text=val;
}
}我测试了,发现系统根本就不触发DropDownList1_SelectedIndexChanged事件
<asp:DropDownList id="DropDownList1" runat="server" Width="90%" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged"
AutoPostBack="true"></asp:DropDownList>
</ItemTemplate>
要在DataBound 事件里写如private void DataGrid1_DataBound(object send..)
{
if(e.Item.ItemIndex >= 0)
{
DropDownList list = e.Item.FindControl("下拉框的ID") as DropDownList;
if(list != null)
{
list.OnSelectedIndexChanged += SelectEven;
}
}
}private void SelectEven(object send,system..){
//todo
}
html
<asp:TemplateField>
<HeaderStyle Width="100px" />
<ItemTemplate>
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="true" OnSelectedIndexChanged="DDL_SelectedIndexChanged">
<asp:ListItem Text="baidu" Selected="true"></asp:ListItem>
<asp:ListItem Text="google"></asp:ListItem>
<asp:ListItem Text="yahoo"></asp:ListItem>
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
后台代码:
Protected Sub DDL_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs)
Dim myddl As DropDownList = CType(sender, DropDownList)
Dim myrow As GridViewRow = CType(myddl.Parent.Parent, GridViewRow)
Response.Write("操作:" + myddl.SelectedItem.Text + "操作列:" + myrow.Cells(0).Text)
End Sub
Dim myddl As DropDownList = CType(sender, DropDownList)
Dim myrow As GridViewRow = CType(myddl.Parent.Parent, GridViewRow)
Response.Write("操作:" + myddl.SelectedItem.Text + "操作列:" + myrow.Cells(0).Text)
End Sub