我想把这个值赋给一个变量,应该是在datagrid1_ItemDataBound事件中写吧?还有,怎么样才能让datagrid在数据绑定的情况下,规范的让某列只显示两个字符?谢谢!

解决方案 »

  1.   

    在datagrid的ItemCommand事件中。
    当点击这一行的按钮时。记得按钮的CommandName要设置,例如设置为a
    if(e.CommnandName=="a")
    {
       string str = ((Lable)e.Item.FindControl("id")).Text
    }只显示两个字符:
    前代码绑定
    例如是个lable
    lbl.text=<%# SubString(((DataRowView)Container.DataItem)["title"])%>//title为数据库表的列名
      

  2.   

    private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
    if(e.Item.ItemType==ListItemType.Item|| e.Item.ItemType==ListItemType.AlternatingItem)
    {

    HyperLink hp =(HyperLink ) e.Item.Cells[2].Controls[0];
    if( hp != null)
    {
    e.Item.Cells[2].ToolTip=hp.Text;
    hp.Text=(hp.Text.Length>8?hp.Text.Substring(0,8):hp.Text);
    }
    }
    }
      

  3.   

    得到某一行的值
    1:在DataGrid的模版列中有一个 LinkButton(比如这个控件的text里的值为"查看") 
        在其ItemCommand事件上
         string Type = ((LinkButton)e.CommandSource).Text;
    if(Type == "查看")
    {
                                           执行代码 
                                         }
    2:如果只是想得到DataGrid的普通项值 那么在绑定DataGrid以后,用如下方法:
        for(int i = 0; i<this.MyDataGrid.Items.Count; i++)
        {
    if(this.MyDataGrid.Items[i].Cells[5].Text == "新信息")
     {
                   this.MyDataGrid.Items[i].BackColor = Color.Red;
     }
        }
        其中Cells[5]表示DataGrid你要查找的列所在的位置, "新信息"表示该列的值
       或者,如果你想直接得到DataGrid某一列的值,可以在ItemCommand事件上通过((LinkButton)e.Item.Cells[0].Controls[0]).Text)----表示DataGrid当前的触发行的第一个列的第一个控件内的值得到.另外你说的,在绑定以后如何想显示你所需求的字符数的方法,就和平时你截取字符串的做法几乎是一样的,如果你上面的看懂了,这个问题就很容易解决了
      

  4.   

    还有一种方法结合一个CHECKBOX
    for(int i=0;i<datagird1.items.count;i++)
    {
      CheckBox aa= (CheckBox)datagrid1.items[i].cells[0].findcontrol("CheckBox1");
      if(aa.Checked)
      {
        int id=int.parse(datagrid1.items[i].cells[1].text.ToString());
       }
    }