我在用户控件中动态创建了datagrid,然后在页面上有一个按钮,作用是删除datagrid中多选的数据,结果按钮一按,datagrid就不见了,哪位大哥帮忙解决下,谢谢!!
解决方案 »
- 求一个好的SQLHelper
- 事物 添加操作 如何获取自动增长的ID
- 有关ASP.NET运行的问题
- 二进制图片Response.BinaryWrite 输出后 无法更换其它的图片
- postbackurl 不起作用
- 求一个二维数组的排序算法
- 是不是在 Asp.Net 页中无法使用 System.IO.Directory 的类?
- 请问javascript能否清空asp.net中的session,如果不能那么用什么呢?是否可以调用asp.net中的函数来清空服务器端的session
- 急!!!!!IE6下Ajax不兼容的问题
- 请教关于正则表达式!
- 救命啊,我的项目文件打不开,应该怎么修改配置文件啊?
- .net中如何判断Session已过期?
加上
if(!IsPostBack)
{
//动态创建datagrid的代码
}
{
using System;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using SZNRC.Common;
using System.Web.UI; /// <summary>
/// maginfo 的摘要说明。
/// </summary>
public class maginfo : System.Web.UI.UserControl
{ public static int i=new int();
public static string[] uid=new string[5];
protected System.Web.UI.WebControls.Panel Panel1;
protected DataGrid MyData;
protected System.Web.UI.WebControls.ImageButton ibtnDel;
protected DataSet ds; private void Page_Load(object sender, System.EventArgs e)
{
if (uid==null)
{
uid[1]=""; }
if(!Page.IsPostBack)
{
BindData();
}
}
private void BindData()
{
SqlParameter[] para = {
SqlHelper.MakeInParam("@uid",SqlDbType.VarChar,16,uid[1])
};
ds = SqlHelper.ExecuteDataset(SqlHelper.Connection,CommandType.StoredProcedure,"Sp_SelJobInfo",para);
crestgrid("1");
crestgrid("2");
}
public void crestgrid(string oid)
{
MyData=new DataGrid();
MyData.ID=oid;
Panel1.Controls.Add(MyData);
MyData.AutoGenerateColumns=false;
MyData.BorderWidth=1;
MyData.CellSpacing=1;
MyData.CellPadding=5;
//加checkbox列
TemplateColumn t0 = new TemplateColumn();
t0.ItemTemplate= new ColumnTemplateExport();
t0.HeaderText="选择";
t0.HeaderStyle.Width=50;
///
t0.ItemStyle.Width=50;
MyData.Columns.Add(t0);
//超链接列
HyperLinkColumn hlc=new HyperLinkColumn();
hlc.HeaderText="职位名称";
hlc.HeaderStyle.Width=100; ///
hlc.ItemStyle.Width=100;
hlc.DataNavigateUrlField="OID";
hlc.DataNavigateUrlFormatString="JobDetail.aspx?id={0}";
hlc.Target="_blank";
hlc.DataTextField="job_name";
MyData.Columns.Add(hlc);
//加普通列
BoundColumn t1=new BoundColumn();
t1.HeaderText="招聘人数";
//t1.HeaderStyle.BackColor=Color.FromArgb(240,230,112);//底色
//t1.HeaderStyle.ForeColor=Color.Red; //字体颜色
t1.HeaderStyle.Width=100;
///
t1.ItemStyle.Width=100;
//t1.ItemStyle.BackColor=Color.Blue;
t1.DataField="EmployeeNum" ;
MyData.Columns.Add(t1);
//发布时间列
BoundColumn t2=new BoundColumn();
t2.HeaderText="发布时间";
t2.HeaderStyle.Width=100; ///
t2.ItemStyle.Width=100;
t2.DataField="promulgate_time";
MyData.Columns.Add(t2);
//有效时间列
BoundColumn t3=new BoundColumn();
t3.HeaderText="有效时间";
t3.HeaderStyle.Width=100; ///
t3.ItemStyle.Width=100;
t3.DataField="effect_time";
MyData.Columns.Add(t3); //修改数据列 HyperLinkColumn hl4=new HyperLinkColumn();
hl4.HeaderText="修改";
hl4.HeaderStyle.Width=100; ///
hl4.Text="修改";
hl4.DataNavigateUrlField="OID";
hl4.DataNavigateUrlFormatString="ModifyJob.aspx?id={0}";
hl4.Target="_blank";
MyData.Columns.Add(hl4); //加按钮列
ButtonColumn t5 = new ButtonColumn();
t5.ButtonType=ButtonColumnType.LinkButton;
t5.CommandName="公开";
t5.Text="公开职位";
MyData.Columns.Add(t5);
MyData.DataSource=ds;
MyData.DataBind();
}
#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器
/// 修改此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.ibtnDel.Click += new System.Web.UI.ImageClickEventHandler(this.ibtnDel_Click);
this.Load += new System.EventHandler(this.Page_Load); }
#endregion private void ibtnDel_Click(object sender, System.Web.UI.ImageClickEventArgs e)
{ }
} public class ColumnTemplateExport : ITemplate
{
public void InstantiateIn(Control container)
{
CheckBox cb = new CheckBox();
cb.Text = "";
cb.Checked=false;
container.Controls.Add(cb);
}
}
}
--------------------------------------->>
所以,在 (IsPostBack) 的状态下可以不另外为什么有时候可以不在PageLoad中重新绑定DataGrid?这通常是因为页面及其简单(这往往是树上的简单例子,而不是实际系统中的),所有的事件全都是针对DataGrid的,所有事件参数中都返回了带出列的DataGrid的单行item,并且内部对DataGrid处理之后都重新绑定了 DataGrid。你的事件无法获得单个DataGridItem,因此必须先重建整个DataGrid以便获得用户在浏览器上针对多个DataGridItem操作的值。
private void ibtnDel_Click(object sender, System.Web.UI.ImageClickEventArgs e)
{
}这里面这么是空的。你的点击事件什么都没执行的阿!
需要在IsPostBack下面。