0

私は C# で asp.net プロジェクトを書いていますが、少し問題があります。

グリッドビュー内にドロップダウンリストがあり、両方とも最初は1つのデータベースから入力されていますが、異なるテーブル(異なる選択クエリ)です。

次のコードで 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"

プロジェクトは問題なく実行されます。

データベースクエリからドロップダウンリストのツールチップを設定する方法を知っている人はいますか? ありがとう。

4

1 に答える 1

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

これははるかに読みやすく、保守とデバッグが容易です。

于 2012-07-12T09:45:37.740 に答える