如何在ASP.NET GridView中访问基础数据表
我在ASP.NET页面上有一个分页的GridView。在GridView控件的DataBound事件中,我试图将行中每个单元格的OnClick事件更新为window.open(),使用基础DataTable中未显示在GridView中的字段打开一个新页面。但是,GridView数据源属性为null,GridViewRow数据项属性也是如此。GridView的数据键的计数为0。分页的数据集有20行,正在正确呈现,我只是找不到底层数据来提取window.open()调用所需的ID 我在构建页面时遵循了asp.net指南: 所以我有一个DAL->BLL->ObjectDataSource->GridView。ID列正在GridView中隐藏:如何在ASP.NET GridView中访问基础数据表,asp.net,gridview,datatable,Asp.net,Gridview,Datatable,我在ASP.NET页面上有一个分页的GridView。在GridView控件的DataBound事件中,我试图将行中每个单元格的OnClick事件更新为window.open(),使用基础DataTable中未显示在GridView中的字段打开一个新页面。但是,GridView数据源属性为null,GridViewRow数据项属性也是如此。GridView的数据键的计数为0。分页的数据集有20行,正在正确呈现,我只是找不到底层数据来提取window.open()调用所需的ID 我在构建页面时遵循
<asp:GridView ID="pdfdocuments" runat="server" AllowPaging="True"
AutoGenerateColumns="False" DataSourceID="pdfods" PageSize="20"
ondatabound="pdfdocuments_DataBound">
<PagerSettings Mode="NumericFirstLast" />
<Columns>
<asp:BoundField DataField="pdf_id" HeaderText="pdf_id" InsertVisible="False"
ReadOnly="True" SortExpression="pdf_id" Visible="False" />
...
</Columns>
<HeaderStyle BackColor="#FFCC99" />
<AlternatingRowStyle BackColor="#FFFFCC" />
</asp:GridView>
...
如何访问基础数据表中的pdf_id值?尝试在RowDataBound事件中访问GridView.DataSourceObject 除非需要使用javascript window.open,否则最好使用锚定标记和目标,如以下代码所示:
<asp:GridView ID="GridView1" runat="server" DataSourceID="ODS1"
OnRowDataBound="GridView1_RowDataBound" AutoGenerateColumns="False">
<Columns>
<asp:HyperLinkField DataTextField="FieldName" DataNavigateUrlFields="FieldID" DataNavigateUrlFormatString="somePage.aspx?id={0}" Target="_blank" />
</Columns>
</asp:GridView>
我同意D-Mac使用RowDataBound事件。但是不要使用GridView.DataSourceObject,而是尝试访问行的DataItem属性
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
DataRowView rowView = e.Row.DataItem as DataRowView;
if (rowView != null)
{
//Check if the execution reach this pont
object pdf_id = rowView["pdf_id"];
}
}
您可以找到一个示例我之所以避免使用带有超链接的单独列,是因为水平屏幕的不动产有点稀少,所以我希望整行都可以单击以打开相关文档。将DataSourceObject强制转换为DataTable或DataView会导致空值,因此我不确定如何从DataSourceObject中获取数据值。我所做的是使用第一个示例,并将所有条目替换为条目。工作起来很有魅力!
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
DataRowView rowView = e.Row.DataItem as DataRowView;
if (rowView != null)
{
//Check if the execution reach this pont
object pdf_id = rowView["pdf_id"];
}
}