我做过的一个页面:要从Datagrid模版列中取得绑定的值
从网上一搜,发现大都用FindContol()方法,我也试过,用DataGrid.FindControl和e.Item.FindControl()取不到值
如果,模版列中的控件设为Input   html控件,值赋给input的Value则可以取到值,呵呵,郁闷了一天,通过跟踪e.Item.DataItem终于找到
一个不错的方法;就是用e.Item.DataItem对象
如下:
   DataRowView drv = e.Item.DataItem as DataRowView;   
 
  drv.ItemArrary就是当前行的所有绑定列的值,用Drv.ItemArrary[0]。。。。就可以取到
  还有drv.Row["绑定的列名"],这个方法可以取得本行的所有已知绑定列的值,无论是绑定列还是模版列

呵呵,高兴之余,特此共享
 


Html页面中的模版列如下:

<asp:datagrid id="dgShowOther" runat="server" Width="522px" Height="90px" AllowPaging="True" AutoGenerateColumns="False"
       Font
-Size="14px" PageSize="9">
       
<HeaderStyle Font-Bold="True" Wrap="False" HorizontalAlign="Center" VerticalAlign="Middle"></HeaderStyle>
       
<Columns>
        
<asp:BoundColumn Visible="False" DataField="Code" HeaderText="Code">
         
<HeaderStyle Width="28px"></HeaderStyle>
        
</asp:BoundColumn>
        
<asp:TemplateColumn HeaderText="显示信息">
         
<HeaderStyle Width="500px"></HeaderStyle>
         
<ItemTemplate>
          
<asp:Label ID="lbl1">
           
<B>
            
<%# DataBinder.Eval(Container.DataItem,"Name")%>
           
</B>
          
</asp:Label><br>
          
&nbsp;&nbsp;
          
<asp:Label ID="lbl2" Runat="server">
           
<%# DataBinder.Eval(Container.DataItem,"Brief")%>
          
</asp:Label>
         
</ItemTemplate>
        
</asp:TemplateColumn>
       
</Columns>
       
<PagerStyle VerticalAlign="Middle" Font-Bold="True" HorizontalAlign="Center" Mode="NumericPages"></PagerStyle>
      
</asp:datagrid>






ASP.NET的.CS页面中的DataGrid数据绑定方法:

private void dgShowOther_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
  

   
//从e.Item.DataItem 取得本行绑定的值
   DataRowView drv = e.Item.DataItem as DataRowView;   

   
//点击表格打开
   if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
   
{
                e.Item.Attributes.Add(
"OnClick""ClickEvent('bhqsr.aspx?name='+'"+tabname+"'+'&Code='+'"+e.Item.Cells[0].Text+"'+'&fname='+'"+drv.Row["Name"]+"')");    
   }

   
   
//鼠标移动到每项时颜色交替效果
   if (e.Item.ItemType!=ListItemType.Header)
   

    e.Item.Attributes.Add(
"OnMouseOut""this.style.backgroundColor='Transparent';this.style.color='Black'");
    e.Item.Attributes.Add(
"OnMouseOver""this.style.backgroundColor='#cacee1';this.style.color='Blue'");
   }


   
//鼠标的形状为小手
   e.Item.Attributes["style"= "Cursor:hand";  
  
  }

posted on 2006-12-19 14:59  Dragon-China  阅读(622)  评论(0编辑  收藏  举报