从数据库asp.net C#中查询为gridview中的dropdownlist设置ToolTip

时间:2012-07-12 09:33:42

标签: c# asp.net textbox tooltip

我正在用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设置工具提示吗? 感谢。

1 个答案:

答案 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();
    }
}

这样更易读,更易于维护和调试。