换了一个东家后,终于可以在上班时,偷偷发布一下BLOG文章了。转正题:
通常在数据控件(比如:datagird,gridview)里使用模板列,并向模板列里添加子控件(如:dropdownlist,checkbox...),是很常见的事情,有时候我们会需要直接使用到子控件自带的事件来处理问题,若干年前,刚接触.NET的时候,对这样的处理还不太了解,也没查到太多资料来处理这类问题,通常都是使用foreach循环数据控件的rows,用FindControl方式获得每个模板列里的子控件的值。如果需要知道某一行里某一个子控件的值,就不太好处理了。现在接触.NET 久了,大概也掌握了解决这类问题的方法,如下:
.aspx代码:(部分)
----------------------------------------
<div>
<asp:GridView ID="GridView" runat="server" AutoGenerateColumns="False" OnRowDataBound="GridView_RowDataBound" OnRowUpdating="GridView_RowUpdating">
<Columns>
<asp:TemplateField HeaderText="abc">
<ItemTemplate>
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged">
<asp:ListItem Value="1">a</asp:ListItem>
<asp:ListItem Value="2">b</asp:ListItem>
<asp:ListItem Value="3">c</asp:ListItem>
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="TreeNodeName" HeaderText="名字" SortExpression="TreeNodeName" />
</Columns>
</asp:GridView>
</div>
这段代码里就是一个GridView的模板列里有一个DropDownList
.aspx.cs代码(部分)
-----------------------------------------------------------------------
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
DropDownList da = (DropDownList)sender;
//得到DropDownList 选中的值
string abc = da.SelectedValue;
System.Web.UI.WebControls.GridViewRow dvr = (System.Web.UI.WebControls.GridViewRow)da.NamingContainer;
//得到选中DropDownList 所在行的某字段值
string bbbc = dvr.Cells[1].Text;
//DropDownList db = (DropDownList)dvr.FindControl("DropDownList1");
//db.SelectedIndex = da.SelectedIndex;
}
DropDownList 的选中后的响应事件。
通常在数据控件(比如:datagird,gridview)里使用模板列,并向模板列里添加子控件(如:dropdownlist,checkbox...),是很常见的事情,有时候我们会需要直接使用到子控件自带的事件来处理问题,若干年前,刚接触.NET的时候,对这样的处理还不太了解,也没查到太多资料来处理这类问题,通常都是使用foreach循环数据控件的rows,用FindControl方式获得每个模板列里的子控件的值。如果需要知道某一行里某一个子控件的值,就不太好处理了。现在接触.NET 久了,大概也掌握了解决这类问题的方法,如下:
.aspx代码:(部分)
----------------------------------------
<div>
<asp:GridView ID="GridView" runat="server" AutoGenerateColumns="False" OnRowDataBound="GridView_RowDataBound" OnRowUpdating="GridView_RowUpdating">
<Columns>
<asp:TemplateField HeaderText="abc">
<ItemTemplate>
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged">
<asp:ListItem Value="1">a</asp:ListItem>
<asp:ListItem Value="2">b</asp:ListItem>
<asp:ListItem Value="3">c</asp:ListItem>
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="TreeNodeName" HeaderText="名字" SortExpression="TreeNodeName" />
</Columns>
</asp:GridView>
</div>
这段代码里就是一个GridView的模板列里有一个DropDownList
.aspx.cs代码(部分)
-----------------------------------------------------------------------
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
DropDownList da = (DropDownList)sender;
//得到DropDownList 选中的值
string abc = da.SelectedValue;
System.Web.UI.WebControls.GridViewRow dvr = (System.Web.UI.WebControls.GridViewRow)da.NamingContainer;
//得到选中DropDownList 所在行的某字段值
string bbbc = dvr.Cells[1].Text;
//DropDownList db = (DropDownList)dvr.FindControl("DropDownList1");
//db.SelectedIndex = da.SelectedIndex;
}
DropDownList 的选中后的响应事件。