assume you are using templates, before you call databind, for the columns you don't want to the user to seeif (不是登陆用户)
{
   DataGrid1.Columns[n1].Visible = false;
   DataGrid1.Columns[n2].Visible = false;
}...
DataGrid1.Bind();

解决方案 »

  1.   

    你可以在代码中设置datagrid的列,而不是直接在设计器中生成这些列的属性。
    然后对登陆的用户用session 或 cookie来存储标志。在列邦定时增加对session的一些判断就可以了。
    protected System.Web.UI.WebControls.DataGrid dgView;//设置数据源,设定其他列
    ........
    ........
    //设定要判定的列
    if(Page.Session["userId"] != null && Page.Session["userId"] != "")
    dgView.Columns.Add(this.HyperLinkColumn(......));
    /绑定数据
    dgView.DataBind();//获取链接列
    public static HyperLinkColumn HyperLinkColumn(string DataTextField, string HeaderText, string NavigateUrl)
    {
      HyperLinkColumn Col = new HyperLinkColumn();
      Col.HeaderText = HeaderText;
      Col.DataNavigateUrlFormatString = NavigateUrl;
      Col.DataTextField = DataTextField;
      return Col;
    }
      

  2.   

    how did you get that number? is it part of the records? if so, you could just do? any calculation involved?<asp:TemplateColumn>
    <ItemTemplate>
    会员意见(<%# CalMyTotal(Container.DataItem)%>)
    </ItemTemplate>
    </asp:TemplateColumn>int CalMyTotal(DataRowView drv)
    {
      int n = 0;
      ///
      return n;
    }
      

  3.   

    <%# ((int)DataBinder.Eval(Container.DataItem,"YourColumn")) == 1? "是" : "否"%>
      

  4.   

    把datagrid列都在代码中调用我上面给出的类似的方法(比如一般的列)来生成,这样可以很灵活的替换数据。
      

  5.   

    那个"会员意见(*)"的列,星号我希望返回的是某个表中某个ID号的所有记录!思归大哥你的代码中的(<%# CalMyTotal(Container.DataItem)%>)中Container.DataItem是什么?我希望能返回的是某个表中某个ID号的所有记录
      

  6.   

    http://dotnet.aspx.cc/去这里看看,你或许能够找到完整的答案
      

  7.   

    思归大哥<%# ((int)DataBinder.Eval(Container.DataItem,"YourColumn")) == 1? "是" : "否"%>
    这段代码应该放在哪里啊?我把它放在DataField="<%# ((int)DataBinder.Eval(Container.DataItem,"F_CONS_DEAL")) == 1? "是" : "否"%>"好象没有用啊
      

  8.   

    use an ItemTemplate inside TemplateColumn, seehttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwebuiwebcontrolstemplatecolumnclasstopic.asp
      

  9.   

    下面就是实现这一功能的aspx代码和脚本代码:DataGrid[Columns]_Visible.aspx
    <%@ Page language="c#" Codebehind="DataGrid[Columns]_Visible.aspx.cs" Src="DataGrid[Columns]_Visible.aspx.cs" AutoEventWireup="false" Inherits="Exam.DataGridColumns_Visible" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
    <HTML>
     <HEAD>
      <title>Lion互动网络--显示和隐藏DataGrid中的列    作者:Lion</title>
     </HEAD>
     <body MS_POSITIONING="FlowLayout">
      <form id="Form1" method="post" runat="server">
       <asp:Button id="ID_Show" runat="server" Text="显示列"></asp:Button>
       <asp:Button id="ID_Hid" runat="server" Text="隐藏列"></asp:Button><FONT face="宋体"><BR>
       </FONT>
       列数:<asp:TextBox id="ID_Num" runat="server"></asp:TextBox>
       <asp:DataGrid ID="ID_DataGrids" Runat="server" AutoGenerateColumns="False" BorderColor="#999999"
        BorderStyle="None" BorderWidth="1px" BackColor="White" CellPadding="3" GridLines="Vertical">
        <AlternatingItemStyle BackColor="Gainsboro"></AlternatingItemStyle>
        <ItemStyle ForeColor="Black" BackColor="#EEEEEE"></ItemStyle>
        <HeaderStyle Font-Bold="True" ForeColor="White" BackColor="#000084"></HeaderStyle>
        <Columns>
         <asp:BoundColumn DataField="id" HeaderText="编号ID">
          <HeaderStyle HorizontalAlign="Center"></HeaderStyle>
         </asp:BoundColumn>
         <asp:BoundColumn DataField="Title" HeaderText="标题">
          <HeaderStyle HorizontalAlign="Center"></HeaderStyle>
         </asp:BoundColumn>
         <asp:BoundColumn DataField="AddTime" HeaderText="加入时间" DataFormatString="{0:yyyy年MM月dd日}">
          <HeaderStyle HorizontalAlign="Center"></HeaderStyle>
         </asp:BoundColumn>
         <asp:EditCommandColumn Visible="False" ButtonType="LinkButton" UpdateText="" HeaderText="Edit" CancelText=""
          EditText="Edit">
          <HeaderStyle HorizontalAlign="Center"></HeaderStyle>
         </asp:EditCommandColumn>
        </Columns>
       </asp:DataGrid>
      </form>
     </body>
    </HTML>
      

  10.   

    DataGrid[Columns]_Visible.Aspx.Csusing System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;namespace Exam
    {
     /// <summary>
     /// KillProcess 的摘要说明。
     /// </summary>
     public class DataGridColumns_Visible : System.Web.UI.Page
     {
      protected System.Web.UI.WebControls.Button ID_Hid;
      protected System.Web.UI.WebControls.Button ID_Show;
      protected System.Web.UI.WebControls.TextBox ID_Num;
      protected System.Web.UI.WebControls.DataGrid ID_DataGrids;
     
      private void Page_Load(object sender, System.EventArgs e)
      {
       // 在此处放置用户代码以初始化页面
       if(!Page.IsPostBack)
       {
        DataGridBind();
        this.ID_Hid.Attributes["onclick"] = this.ID_Show.Attributes["onclick"] = "JavaScript: var num =document.all.item(\"ID_Num\").value; if(num==\"\"){alert('列数不能为空');return false;};if(isNaN(num)){alert('列数必须是数字');return false;};if(num<1 || num>3){alert('列数必须介于1-3之间');return false;}";
       }
      }  #region Web 窗体设计器生成的代码
      override protected void OnInit(EventArgs e)
      {
       //
       // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
       //
       InitializeComponent();
       base.OnInit(e);
      }
      
      /// <summary>
      /// 设计器支持所需的方法 - 不要使用代码编辑器修改
      /// 此方法的内容。
      /// </summary>
      private void InitializeComponent()
      {    
       this.ID_Hid.Click += new System.EventHandler(this.ID_Hid_Click);
       this.ID_Show.Click += new System.EventHandler(this.ID_Show_Click);
       this.ID = "ID_DataGrid";
       this.Load += new System.EventHandler(this.Page_Load);  }
      #endregion  #region Function Custon  /// <summary>
      /// 绑定DataGrid
      /// </summary>
      private void DataGridBind()
      {
       System.Data.DataTable DT = new System.Data.DataTable("Process");
       DT.Columns.Add("ID",typeof(int));   
       DT.Columns.Add("Title",typeof(string));
       DT.Columns.Add("AddTime",typeof(DateTime));
       DT.Columns[0].AutoIncrement = true;
       DT.Columns[0].AutoIncrementSeed = 1;
       DT.Columns[0].AutoIncrementStep = 1;
       for(int i=0;i<10;i++)
       {
        System.Data.DataRow DR = DT.NewRow();
        DR[1] = "欢迎光临Lion互动网络 "+i.ToString();
        DR[2] = System.DateTime.Now.AddDays(i);
        DT.Rows.Add(DR);
       }   
       ID_DataGrids.DataSource = DT;
       ID_DataGrids.DataBind();
       DT.Clear();
       DT.Dispose();
       
      }  #endregion
      #region Button Click  /// <summary>
      /// 显示列
      /// </summary>
      /// <param name="sender"> 事件的源 </param>
      /// <param name="e"> 事件处理程序接收一个 <see cref="System.EventArgs"/> 类型的参数,它包含与此事件相关的数据 </param>
      private void ID_Show_Click(object sender, System.EventArgs e)
      {
       this.ID_DataGrids.Columns[int.Parse(ID_Num.Text)-1].Visible = true;
      }  /// <summary>
      /// 隐藏列
      /// </summary>
      /// <param name="sender"> 事件的源 </param>
      /// <param name="e"> 事件处理程序接收一个 <see cref="System.EventArgs"/> 类型的参数,它包含与此事件相关的数据 </param>
      private void ID_Hid_Click(object sender, System.EventArgs e)
      {
       this.ID_DataGrids.Columns[int.Parse(ID_Num.Text)-1].Visible = false;
      }  #endregion   }
    }
      

  11.   

    if (不是登陆用户)
    {
       DataGrid1.Columns[n1].Visible = false;
       DataGrid1.Columns[n2].Visible = false;
    }...
    DataGrid1.Bind();
      

  12.   

    你可以根据权限设置DataGrid.Columns(num)的Visibal属性
    num:代表第几列
      

  13.   

    思归大哥:
    <asp:TemplateColumn>
    <ItemTemplate>
    会员意见(<%# CalMyTotal(Container.DataItem)%>)
    </ItemTemplate>
    </asp:TemplateColumn>int CalMyTotal(DataRowView drv)
    {
      int n = 0;
      ///
      return n;
    }
    这段代码好象无法实现我需要的功能,我希望实现的是:datagrid的一列显示的是会员意见,用超级链接到其他的页面,而在列中显示的是"会员意见(*)"其中*代表的是另外一个表中查询到的某个条件的会员意见的条数,然后显示出来.例如"会员意见(13)"表示会员意见这个列中某行的会员意见有13条!