dtgClass有五列,第一列为自动编号,后三列分别为ClassID(关键字段,不显示),Grade,ClassName,第五列为button,点击时显示该班级的信息:某级某班,问题是这里面怎么写获取当前选定行选定列的值:public void ShowClassInfo(Object objSender, System.Web.UI.WebControls.DataGridCommandEventArgs e)//dtgClass中有OnItemCommand="ShowClassInfo"
{
 if (e.CommandName=="ClassInfo")//button中有CommandName="ClassInfo"
 {
    int ClassID=Convert.ToInt32(dtgClass.DataKeys[e.Item.ItemIndex].ToString());//获取关键字段值
    string Grade=e.Item.Cells[1].Text;//问题在这里!!改成dtgClass.Items[e.Item.ItemIndex].Cells[1]也不行,不能改为dtgClass[e.Item.ItemIndex,1],也没有dtgClass.Rows或Row的提示,也没有dtgClass.Cells的提示,更没有e.Cells的提示
    string ClassName=e.Item.Cells[2].Text;//改成与上句同样的 
    lblInfo.Text=Grade+"级"+ClassName+"班"+",班级编号为:"+ClassID;
 }
}显示的结果是:级班,班级编号为:5,也就是说,点击事件还是没问题的,只是获取当前行的年级名,班级名不对,不知为空还是没取到。

解决方案 »

  1.   

    补充:用Grade=dtgClass.Items[e.Item.ItemIndex].Cells[1].Text不对;
        
      

  2.   

    1 说到单步跟踪,也就是逐句跟踪吧?
    2 如果是的话,很多自定义的函数,都没法跟踪,它压根就不理,象我这个我在 if (e.CommandName=="ClassInfo")//button中有CommandName="ClassInfo"
    这里设定断点,压根就进不来,是不是不能放到判断语句上;
    3 另外,我想追踪grade的值,可以在哪里设置吗?
    4 SelectItem怎么用
      

  3.   

    this.DataGrid1.SelectedItem.Cells[2].Text //选中行的第二列的值
      

  4.   

    HTML
    <asp:BoundCloumn DataField="Grade" HeaderText="Grade"/>
    <asp:BoundCloumn DataField="ClassName" HeaderText="ClassName"/>CS
    string Grade=((TextBox)e.Item.Cells[3].Controls[0]).Text;
    string ClassName=((TextBox)e.Item.Cells[4].Controls[0]).Text;
      

  5.   

    需要说明的是,此时是按所在行(记录)的按钮实现选择,而并非已有的选择列,而且该datagrid中使用lable显示,textbox修改的.