• 全部
  • .NET Framework
  • ASP
  • Web Services
  • .NET互联网桌面应用
  • VB
  • 图表区
  • 分析与设计
  • 组件/控件开发
  • AppLauncher
  • 问答

急!怎样删除DataGrid中的一列

springy 2004-08-21 03:28:32
源代码如下:
private void Page_Load(object sender, System.EventArgs e)
{
if(!this.IsPostBack )
{
ds = new DataSet ();
SqlConnection con=new SqlConnection("server=localhost;uid=sa;pwd=sa;database=HNContract");
SqlCommand cmd=new SqlCommand("P_ConForGather",con);
cmd.CommandType=CommandType.StoredProcedure ;
con.Open ();

SqlDataAdapter dsCommand=new SqlDataAdapter(cmd);
dsCommand.Fill(ds);


DataGrid1.DataSource=ds;
DataGrid1.DataBind();

// 删除第一列
DataGrid1.Columns [0].Visible = false;
}

}
但总报错:“索引超出范围。必须为非负值并小于集合大小。参数名: index ”
请问是怎么回事啊
...全文
114 点赞 收藏 8
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
iiboy 2004-08-21
在Select FieldList from TableName中把要隱藏的列的字段名不列出來就行了
回复
goody9807 2004-08-21
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>wxy</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>

DataGrid[Columns]_Visible.Aspx.Cs



using 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



}
}



回复
springy 2004-08-21
谢谢大家。我试过了 “属性生成器--〉列--->选择你要隐藏的那一列,在是否显示复选框上把钩取掉
” 不过只能隐藏字段名,列不能隐藏,怎么回事?
回复
cjzlxy 2004-08-21
属性生成器--〉列--->选择你要隐藏的那一列,在是否显示复选框上把钩取掉
回复
HNU 2004-08-21
在 ds 中


sa.Tables["Table"].Columns["ID"].ColumnMapping = MappingType.Hidden;//隐藏ID列
回复
springy 2004-08-21
我是菜鸟,大家可以说的详细一些吗
回复
michaelowenii 2004-08-21
在属性编辑器种将此列 visable = false;
回复
yong427 2004-08-21
DataGrid的是自动生成列的吗?如果是,那它改为自定义列
回复
相关推荐
发帖
.NET技术社区
创建于2007-09-28

5.8w+

社区成员

.NET技术交流专区
申请成为版主
帖子事件
创建了帖子
2004-08-21 03:28
社区公告
暂无公告