我的看法
问题一,其实绑定列,按钮列都可以看成是模板列的特例(就是已做成的模板),用模板列更灵活,更易扩展,至于混用的问题,我们公司做的系统很多都是这样的,用了快一年,还没有碰到过问题,不知道别的朋友有没有碰到过
问题二,在你的编辑状态触发事件里面写,比如你触发的是editcommand,就在里面写,如果是
itemcommand,就在itemcommand里面写
比如
private void DataGrid1_editCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
Label Label1=(Label)e.Item.findcontrl("那个datagrid中的label id");
dropdownlist ddlist=(dropdownlist)e.Item.findcontrl("那个datagrid中的dropdownlist id");
然后就像平常一样付值就行了
}
问题3 具体意义在vs.net中对e按F1,那里面解释很清楚

解决方案 »

  1.   

    1、你的第一个问题我不赞同,我经常做一个模板列,其它不做模板列。根据自己需要来定。2、你在DataGrid的EditCommand事件里利用找控件的方法找到相应的值,再互相赋值就行了3、EditCommand中的e.Item.FindControl("controlid")是找到处于编辑下的控件。
       DataGrid1_ItemDataBound中e.Item.FindControl("controlid")是找dataGrid里不处于编辑时的控件,比如你可以获得dataGrid页脚等!
      

  2.   

    问题一:没遇到过2: 我一般都处理为itemcommand事件,给它取个名commandname="xxx"  在itemcommand事件里判断一下commandname=="xxx" 就可以了3我也没遇过
      

  3.   

    我来说两句吧
    关于模板列与一般列的实现原理都是一样的
    1。一般列声明以后,DATAGRID会把列里面的控件ADD到DATAGRIDITEM的CONTROLS,要加在IITEMPLATE中然后`IITEMPLATE会调用InstantiateIn方法,在这个方法里,IITEMPLATE会把在其中声明的控件ADD到DATAGRIDITEM的CONTROLS里,所以说,一般列和模板列没什么不同。
    2。模板列由于可以任意的添加控件,所以要处理控件的事件和数据绑定就是最重要,最麻烦的了,
    比如说DATAGRID的COMMMAND列,由于Command控件的多少的不确定性,所以用的是DATAGRIDITEM里的BULLTE方法,把COMMAND控件的事从BULLTE方法里冒泡出来,然后通过DATAGRID一直传递到.ASPX。并且同过COMMANDNAME来判断是那个按钮在CLICK,所以在声明模板列里的按钮时,你必须指明其COMMANDNAME,不然这个按钮系统就没办法找到,但是一般的控件这么办呢,比如说CHECKBOX的CHANGED事件,那又怎么传递出来呢,它的数据绑定怎么办呢(常常要根据DATASOURCE的某一列的值来初始化CHECKBOX是CHECKED为True还是False,)这一般都要自定义IITEMPLATE,
    并自定义TEMPLATECOLUMN,很麻烦,查资料可得