我做过的一个页面:要从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>
<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>
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>
<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";
}
{
//从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";
}