日期:2014-05-18  浏览次数:20436 次

救命啊,datagrid按钮列问题。
我在   datagrid   上加了个按钮列

//添加选择列
ButtonColumn   bc   =   new   System.Web.UI.WebControls.ButtonColumn();
bc.HeaderText   =   "选择 ";
bc.CommandName   =   "Select ";
bc.Text   =   " <img   border= '0 '   src= 'Images/view.gif '   /> ";
this.dag_Gateways.Columns.Add(bc);

再绑定,之前已经给定了数据源并添加了BoundColumn。

this.dag_Gateways.DataBind();

而且已经添加了selectedindexchanged事件了
this.dag_Gateways.SelectedIndexChanged   +=   new   System.EventHandler(this.dag_Gateways_SelectedIndexChanged);

为什么调试时点击这个按钮,不能执行这个事件,用itemcommand也不行生成的代码也是这样的

<a   href= "javascript:__doPostBack( 'dag_Gateways$_ctl4$_ctl0 ', ' ') ">  

<script   language= "javascript ">
<!--
function   __doPostBack(eventTarget,   eventArgument)   {
var   theform;
if   (window.navigator.appName.toLowerCase().indexOf( "netscape ")   >   -1)   {
theform   =   document.forms[ "SendGateway "];
}
else   {
theform   =   document.SendGateway;
}
theform.__EVENTTARGET.value   =   eventTarget.split( "$ ").join( ": ");
theform.__EVENTARGUMENT.value   =   eventArgument;
theform.submit();
}
//   -->
</script>  

//咋整啊

------解决方案--------------------
你要实现什么功能?代码多了看的昏
------解决方案--------------------
你要调用的是脚本事件,给它加onclick才行
------解决方案--------------------
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName = SelectComand)
{
GridView1.SelectedIndex = e.CommandSource;
//是不是这个意思?
}
}
------解决方案--------------------
问题很清楚了,就是动态添加的按钮列没能触发dataGrid的SelectedIndexChanged

=========

不用喊了,没人救得了你 :P

很正常,即使是老鸟,对于动态添加动态也无法自由控制之 ....

建议不使用此方式

非要使用,建议先仔细阅读

创建动态数据输入用户界面
http://www.microsoft.com/china/msdn/library/webservices/asp.net/dnasppDynamicUI.mspx#ELC



------解决方案--------------------
关键是要深刻理解 ASP.NEt 控件和页面事件生命周期 顺序