如何在使用DataSource时操作datagridview列?

时间:2011-04-27 01:59:01

标签: c# datagrid datagridview datasource

我在c#上使用datagridview并使用数据源对象提供它。如果AutoGenerateColumnstrue,则一切正常,所有列都会生成其内容。但是我想只显示第一列,并使用第一列工具提示的其余列上的信息。

我尝试将AutoGenerateColumns设置为false并创建了一个名为AutoGenerateColumns true时添加的第一列的列,但是当我执行此操作时没有添加任何行

做正确的方法是什么?

更新 在我要隐藏的所有字段上方添加[Browsable(false)]工作:)

现在,我如何使用“隐藏”列中的数据并将它们用于第一列单元格工具提示?

2 个答案:

答案 0 :(得分:3)

您可以在单元格格式化事件中执行此操作。这是msdn。

的代码片段
// Sets the ToolTip text for cells in the Rating column.
void dataGridView1_CellFormatting(object sender, 
    DataGridViewCellFormattingEventArgs e)
    {
    if ( (e.ColumnIndex == this.dataGridView1.Columns["Rating"].Index)
        && e.Value != null )
    {
        DataGridViewCell cell = 
            this.dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex];
        if (e.Value.Equals("*"))
        {                
            cell.ToolTipText = "very bad"; // you can get the value from your other cells using the above technique with .value instead of .index
        }
        else if (e.Value.Equals("**"))
        {
            cell.ToolTipText = "bad";
        }
        else if (e.Value.Equals("***"))
        {
            cell.ToolTipText = "good";
        }
        else if (e.Value.Equals("****"))
        {
            cell.ToolTipText = "very good";
        }
    }
}

More info here

答案 1 :(得分:0)

我认为你需要的是这样的:

<asp:GridView ID="gridStatus" runat="server" AutoGenerateColumns="False"  DataSourceID="SqlDataSourceForStatusGrid">
    <Columns>
        <asp:BoundField DataField="ID" Visible =false />
        <asp:BoundField DataField="StudentName" HeaderText="Name" SortExpression="StudentName" />

    

这样你就可以在那里找到列,你可以使用Grid.Rows [selectedRow] .Cells [index] .....来回溯它。