如何从数据库中获取GridView头文件的工具提示?

时间:2012-08-30 11:56:36

标签: c# asp.net gridview

我有一个完全由用户定义的GridViewGridView的第一列来自ListBox1。标头使用ListBox2定义。

对于GridView的每个标题文本,相应地我在数据库的表中存储了一行文本。

如何将该行用作GridView标题的工具提示。仅供参考:Differenrt标题列具有存储在数据库表中的不同文本行。

我附上了一个屏幕截图,它将告诉我到底取得了什么以及我期待的是什么。提前谢谢,请帮助。

http://img526.imageshack.us/img526/2083/47621961.jpg

在图像中,我在ListBox2中检索了数据库表的第一列(指GridView1),然后使用该ListBox显示为标题。

以下是我如何做的代码:

DataTable dt = new DataTable();
        DataRow rw = default(DataRow);
        for (int i = 0; i < ListBox2.Items.Count; i++)
        {
            dt.Columns.Add(ListBox2.Items[i].ToString(),System.Type.GetType("System.String"));
        }
        for (int j = 0; j < count; j++)
        {
            rw = dt.NewRow();
            for (int i = 0; i < ListBox2.Items.Count; i++)
            {
                rw[ListBox2.Items[i].ToString()] = " ";
            }
            dt.Rows.Add(rw);
        }
        GridView2.DataSource = dt;
        GridView2.DataBind();

1 个答案:

答案 0 :(得分:1)

您可以将RowDataBound使用GridView DataControlRowType.Header事件:

protected void GridView1_RowDataBound(Object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.Header)
    {
        GridView grid = (GridView)sender;
        DataTable tblProfiles = getProfiles();
        for (int i = 0; i < grid.Columns.Count; i++)
        {
            String header = grid.Columns[i].HeaderText;
            if (header.Length != 0)
            {
                DataRow drProfile = tblProfiles.AsEnumerable()
                    .FirstOrDefault(p => p.Field<String>("Profile_Name") == header);
                if (drProfile != null)
                    e.Row.Cells[i].ToolTip = drProfile.Field<String>("Tool_Tip");
            }
        }
    }
}

private DataTable getProfiles()
{
    // assuming SQL-Server
    var connectionString = "blah";
    using (var con = new SqlConnection(connectionString))
    {
        var sql = "SELECT Profile_Name, Tool_Tip FROM Profiles;";
        using (var da = new SqlDataAdapter(sql, con))
        {
            var tblProfiles = new DataTable("Profiles");
            da.Fill(tblProfiles);
            return tblProfiles;
        }
    }
}

请注意,您需要为Linq-To-DataSet添加using System.Linq;