今天遇到了问题,就是在 DataGrid中DropDownList触发SelectedIndexChanged事件 ,并通过修改DropDownList的值,把其它对应的值也读取绑定DataGrid相应的行,前台模版列,AutoPostBack="True" 不要忘了 本文来自: IT知道网(http://www.itwis.com) 详细出处参考:

<asp:TemplateColumn HeaderText="上级提供商">
<ItemStyle HorizontalAlign="Center" Width="50px"></ItemStyle>
<ItemTemplate>
<asp:DropDownList ID="DDL_UP" runat=server AutoPostBack="True"
OnSelectedIndexChanged="DDL_UP_SelectedIndexChanged" ></asp:DropDownList>
</ItemTemplate>
</asp:TemplateColumn>后台
   protected void DDL_UP_SelectedIndexChanged(object sender, EventArgs e)
    ...{
        System.Web.UI.WebControls.DataGridItem item = (DataGridItem)((Control)sender).Parent.Parent;
//获取当前Item,是两个Parent,一个会出错的
        DropDownList list;
        list = (DropDownList)item.FindControl("DDL_UP");
        string str = "select  *  from  aa  where Product_TypeName='" + item.Cells[15].Text.Trim() + "'";
//已经省略了sql语句
        SqlDataReader dr= Sg.SQLServerDAL.DbHelperSQL.ExecuteReader(str);
      if (dr.Read())
      ...{
          ((TextBox)item.Cells[4].Controls[0]).Text = dr["Product_Name"].ToString();//读取修改相应列的值
          ((TextBox)item.Cells[4].Controls[0]).Enabled = false;
          if (dr["Product_Price"].ToString() != "")
          ...{
              ((TextBox)item.Cells[8].Controls[0]).Text = Convert.ToDecimal(dr["Product_Price"]).ToString("0");
//把值赋给要修改列的文本框
          }
          if (dr["Product_Cost"].ToString() != "")
          ...{

((TextBox)item.Cells[10].Controls[0]).Text = Convert.ToDecimal(dr["Product_Cost"]).ToString("0");
          }
          else
          ...{
              ((TextBox)item.Cells[10].Controls[0]).Text = "0";
          }
      }
      dr.Close();
      
    }
原先参考以下方法没有成功:
DataGrid中DropDownList OnSelectedIndexChanged事件触发- -

手头有个程序,其中设计到用DataGrid对数据进行多种操作处理;for example:Insert,Edit,Del,Cancel and so on.考虑到用按钮列的话需要太多按钮,因此想用DropDownList来实现按钮的各项功能.这样就要用到DropDownList的OnSelectedIndexChanged事件的触发.

开始我在html里的DropDownList添加了OnSelectedIndexChanged="changed",然后在后台写changed()的代码,但是这样的话将无法获取当前的Item信息.在客户端向服务器端传送操作的参数,然后服务器对此进行处理,这样显然不太现实.后来想到了ItemDataBound事件;在msdn里面,是这么说的:

事件数据事件处理程序接收一个 DataGridItemEventArgs 类型的参数,它包含与此事件相关的数据。下列 DataGridItemEventArgs 属性提供特定于此事件的信息。

属性 说明
Item 获取引发该事件时 DataGrid 控件中的被引用项。

备注当项被数据绑定到 DataGrid 控件后,将引发 ItemDataBound 事件。此事件为您提供了在客户端显示数据项之前访问该数据项的最后机会。当引发此事件后,该数据项将被设为空,并且不再可用。

也就是说,在DataGrid中添加的服务器控件,需要写触发事件的话,可以在DataGrid.ItemDataBound中为事件添加委托.

DataGrid中DropDownList模板列的OnSelectedIndexChanged事件触发实现如下:

private void testDg_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
  ...{
   if(e.Item.FindControl("MyDropDownList")!=null)
    ((DropDownList)e.Item.FindControl("MyDropDownList")).SelectedIndexChanged+=new System.EventHandler(this.Changed);
  }

测试dropdownlist,selectedindexchanged#region 测试dropdownlist,selectedindexchanged
  protected void Changed(object sender, System.EventArgs e)
  ...{
   System.Web.UI.WebControls.DataGridItem item=(DataGridItem)((Control)sender).Parent.Parent;//获取当前Item
  
   DropDownList list;
   list=(DropDownList)item.FindControl("MyDropDownList");
   Response.Write(list.SelectedItem.Text);
  }
  #endregion

本文来自: IT知道网(http://www.itwis.com) 详细出处参考:http://www.itwis.com/html/net/aspnet/20080219/943.html

转载于:https://www.cnblogs.com/chaobaojun/archive/2009/09/10/1564192.html

DataGrid中DropDownList触发SelectedIndexChanged事件并修改DataGrid行值(转载)相关推荐

  1. ASP.NET的DropDownList触发SelectedIndexChanged事件

    前言: DropDownList就是一个下拉列表,当初在单独使用的时候不怎么需要写程序,所以没有发现一点问题.但当我需要将两个DropDownList关联使用的时候,发现没有触发里面的事件.需要一个按 ...

  2. (论坛答疑点滴)为什么设置了DropDownList的AutoPostBack=True还是不能触发SelectedIndexChanged事件?...

    有人问 (1)AutoPostBack="True" <asp:DropDownList id="DropDownList1" runat="s ...

  3. DropDownList 控件不能触发SelectedIndexChanged 事件

    相信DropDownList 控件不能触发SelectedIndexChanged 事件已经不是什么新鲜事情了,原因也无外乎以下几种: 1.DropDownList 控件的属性 AutoPostBac ...

  4. 为什么设置了DropDownList的AutoPostBack=True还是不能触发SelectedIndexChanged事件?

    有人问 (1)AutoPostBack="True" <asp:DropDownList id="DropDownList1" runat="s ...

  5. DropDownList 控件不能触发SelectedIndexChanged 事件的另一个原因

    相信DropDownList 控件不能触发SelectedIndexChanged 事件已经不是什么新鲜事情了,原因也无外乎以下几种: 1.DropDownList 控件的属性 AutoPostBac ...

  6. DropDownList控件不触发SelectedIndexChanged事件(转)

    DropDownList控件不触发SelectedIndexChanged事件(转) 相信DropDownList 控件不能触发SelectedIndexChanged 原因以下几种: 1.DropD ...

  7. C#中ComboBox的SelectedIndexChanged事件由于触发时间而引起的“未将对象引用到对象实例”错误解决

    今天偶尔复习下WinForm开发,在用到ComboBox下拉框的时候,想用SelectedIndexChanged事件根据选中内容动态展示不同的数据,需求很简单,但是竟然出错了,后来发现其实就是Sel ...

  8. Asp.net DropDownList的SelectedIndexChanged事件沒有反應

    今天碰到一個非常頭疼的問題:DropDownList的SelectedIndexChanged事件沒有反應. 上網查了很多資料都沒用:1.AutoPostBack="True" 2 ...

  9. ComboBox绑定数据源时触发SelectedIndexChanged事件的处理办法

    转载:http://hi.baidu.com/haoyun2012/item/d780ca157a29b239b9318080 感谢原作者 ComboBox最经常使用的事件就是SelectedInde ...

  10. Asp.Net GridView点击/选中单行触发SelectedIndexChanged事件

    // RowDataBound(行数据绑定事件) protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e ...

最新文章

  1. 在线协作沟通,以目标分解成任务树基础的团队配合
  2. 《3ds Max疯狂设计学院》——1.8节本章小结
  3. 第四十五课:MVC,MVP,MVVM的区别
  4. VTK:Utilities之UnknownLengthArray
  5. PCIE总线-PCI、PCIE关系及信号定义
  6. C++ 基本数据类型 的 字节数
  7. 《探索需求》——阅读笔记一
  8. 进程间通信 IPC、LPC、RPC
  9. [渝粤教育] 广东-国家-开放大学 21秋期末考试市场营销10256k2
  10. vue : 无法加载文件 C:\Users\xxx\AppData\Roaming\npm\vue.psl,因为在此系统上禁止运行脚本
  11. 新浪微博登录 java_Java实现模拟登录新浪微博
  12. [每日一氵]索引变量要提前拿出来或者注意顺序
  13. 三级分销系统产品设计原理
  14. NX二次开发(C#)-UIStyler-获取UI选择对象
  15. 使用EPW计算孤立ME方程
  16. 宝塔面板网页访问不了
  17. 程序员的五层境界,你在哪一层?最后一层的,都是人生赢家
  18. 贮藏 git stash
  19. 已解决FutureWarning: The default value of regex will change from True to False in a future version. In
  20. 吴军:AI应该变成通识教育,区块链不是炒概念

热门文章

  1. oj交java代码_UvaOJ java输入代码
  2. 全网首发:成功解决UOS系统上运行JAVA程序任务栏名称问题
  3. 几万字的博文,你自己会看吗
  4. JAVA NP插件,特定的宽度600,插件就不显示
  5. LINUX SHELL让一个应用进程脱离终端运行
  6. 可编译运行的安卓USB/OTG摄像头程序
  7. LINUX下载编译libfaac
  8. JDK有三种字体绘制系统
  9. 软件一定要联网安装,只有内网就干瞪眼
  10. 泰山游记:为何爬山后大腿前部很酸?