我正在用C#编写asp.net项目,我有一个小问题。
我在gridview中有一个下拉列表,它们最初都是从一个数据库填充但不同的表(不同的选择查询)。
我想从查询中为dropdownlist设置ToolTip,用于通过以下代码填充gridview(DataTable1):
<asp:TemplateField HeaderText="choose supervisor" ItemStyle-Width="100px">
<ItemTemplate>
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="true"
OnSelectedIndexChanged="ddlTest_SelectedIndexChanged"
ToolTip =<%#((DataSet1.DataTable1Row)(((DataRowView)Container.DataItem).Row)).p_id %>>
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
但是当我尝试运行项目时,我收到以下错误:
Object reference not set to an instance of an object.
如果我尝试手动设置工具提示,例如:
ToolTip = "abc"
项目运行没有任何问题。
有人知道如何从数据库查询中为dropdownlist设置工具提示吗? 感谢。
答案 0 :(得分:2)
我会从GridView的RowDataBound
事件中执行此操作,该事件是针对每个GridViewRow
触发的,但仅在GridView
获取数据绑定时才会触发。
protected void GridView1_RowDataBound(Object sender, GridViewRowEventArgs e)
{
var grid = (GridView)sender;
if (e.Row.RowType == DataControlRowType.DataRow)
{
DropDownList DropDownList1 = (DropDownList)e.Row.FindControl("DropDownList1");
DataRowView drv = (DataRowView)e.Row.DataItem;
DataSet ds = drv.Row.Table.DataSet;
// i'm not 100% sure what you need here, for example:
DropDownList1.ToolTip = drv.Row.Field<int>("p_id").ToString();
}
}
这样更易读,更易于维护和调试。