首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

关于Datagrid的EditItemTemplate解决思路

2013-07-16 
关于Datagrid的EditItemTemplatetableCTypeIdTypeName一个Datagrid,第一列的标题名称是ABC,第二列的标题名

关于Datagrid的EditItemTemplate
tableC
TypeId  TypeName




一个Datagrid,第一列的标题名称是ABC,第二列的标题名称是类型,在点击这个Datagrid的编辑按钮之后,出现Datagrid的具体一行的编辑形式,第一列的编辑形式是一个label,第二列的编辑形式是一个下拉框,我想实现的效果是,当点击好编辑按钮之后,对第二列下拉框进行选择之后,第一列的label能显示第二列下拉框所选择的选项名称(TypeName),请问这个代码应该如何写?

前台代码:



<asp:TemplateColumn HeaderText="ABC">
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem, "TypeName").ToString()%>
</ItemTemplate>
<EditItemTemplate>
<asp:Label ID="Label2" runat="server"  Text=""></asp:Label>
                                                
                                                                                           
                                                                                           </EditItemTemplate>
</asp:TemplateColumn>





<asp:TemplateColumn HeaderText="类型">
<ItemTemplate>
<%# ShowType(DataBinder.Eval(Container.DataItem,"TypeId").ToString()) %>
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList runat="server" ID="Dropdownlist1"    ></asp:DropDownList>
</EditItemTemplate>
</asp:TemplateColumn>















后台代码:


private void Datagrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
        {


            if (e.Item.ItemType == ListItemType.EditItem)
            {
                DropDownList list1 = (DropDownList)e.Item.FindControl("Dropdownlist1");
               
                string strCmd1 = "select * from [tableC]";
                list1.DataSource = ExecuteDataTable(strCmd1);
                list1.DataTextField = "TypeName";
                list1.DataValueField = "TypeId";
                list1.DataBind();

                string curTemp1;
                DataRowView rv;
                ListItem item1;
                rv = (DataRowView)e.Item.DataItem;

                curTemp1 = ShowPageType(rv.Row["Field"].ToString());
                                item1 = list1.Items.FindByText(curTemp1);
                if (item1 != null)
                    item1.Selected = true;





               
               


               

            }

        }






[解决办法]
编辑模板里面改成这样:
<asp:DropDownList runat="server" ID="Dropdownlist1" AutoPostBack="true" onselectedindexchanged="Dropdownlist1_SelectedIndexChanged"></asp:DropDownList>


增加后台处理方法(需要调试一下,看看怎么找到label2):
protected void Dropdownlist1_SelectedIndexChanged(object sender, EventArgs e) {
DropDownList ddl = (DropDownList)sender;
Label label2 = (Label)(ddl.Parent.Parent.Parent.Controls[0].FindControl("label2"));
if (label2 != null) {
label2.Text = ddl.SelectedValue;
}
}

热点排行