点击删除按钮,动态生成的控件全部消失,谁能帮我看看?
KemuControl.ascx<table class="style1">
<tr>
<td colspan="2">
<asp:Label ID="kemu_name" runat="server"></asp:Label>
</td>
</tr>
<tr>
<td colspan="2">
<asp:Image ID="kemu_img" runat="server" Height="100px" Width="100px" />
</td>
</tr>
<tr>
<td>
<asp:LinkButton ID="edit" runat="server" >编辑</asp:LinkButton>
</td>
<td><asp:LinkButton ID="shanchu" runat="server" >删除</asp:LinkButton>
</td>
</tr>
</table>后台文件 public partial class KemuControl : System.Web.UI.UserControl
{
private string kemu_id;
public string kemu_ID
{
set { this.kemu_id = value; }
get { return kemu_id; } }
public string kemu_Name
{
set { this.kemu_name.Text = value; } }
public string obj_Img
{
set { this.kemu_img.ImageUrl = value; } }
public string shanchu_ID
{
set { this.shanchu.ID = value; }
get { return shanchu.ID; } }
protected void Page_Load(object sender, EventArgs e)
{ //this.del.Click += new EventHandler(del_Click);
string sql = "select * from [obj] where obj_id='" + this.kemu_id + "'";
SqlCommand cmd = new SqlCommand();
SqlDataReader dr = SqlHelper.ExecuteReader(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text, sql, null);
if (dr.Read())
{
this.kemu_name.Text = dr.GetString(1);
this.shanchu.Click += new EventHandler(shanchu_Click);
this.kemu_img.ImageUrl = "../kemu/" + dr.GetString(1) + ".png"; }
dr.Close(); } protected void edit_Click(object sender, EventArgs e)
{ }
protected void shanchu_Click(object sender, EventArgs e)
{
string sql = "delete from obj where obj_id='" + this.kemu_ID + "'";
SqlCommand cmd = new SqlCommand();
using (SqlConnection conn = new SqlConnection(SqlHelper.ConnectionStringLocalTransaction))
{
conn.Open();
SqlHelper.ExecuteNonQuery(conn, CommandType.Text, sql, null);
System.IO.File.Delete(Server.MapPath("/admin/kemu/" + this.kemu_name.Text + ".png")); }
}
}
Default.aspx<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<link href="~/Styles/ModalUpdateProgress.css" rel="stylesheet" type="text/css" />
<link href="~/pix/msgbox/default.css" rel="stylesheet" type="text/css" />
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<uc1:uscMsgBox ID="msgbox" runat="server" ></uc1:uscMsgBox>
<div>
<asp:Table ID="Table1" runat="server">
</asp:Table>
</div> <asp:ModalPopupExtender ID="ModalPopupExtender1" runat="server" TargetControlID="add" PopupControlID="add_kemu"
BackgroundCssClass="modalProgressGreyBackground" CancelControlID="cancel">
</asp:ModalPopupExtender>
<asp:Button ID="add" runat="server" Text="添加" />
</ContentTemplate></asp:UpdatePanel> <asp:ModalUpdateProgress ID="ModalUpdateProgress1" runat="server"
AssociatedUpdatePanelID="UpdatePanel1" BackgroundCssClass="modalProgressGreyBackground">
<ProgressTemplate>
<div class="modalPopup">
Loading..
<img src="../pix/loading.gif" width ="18px" height="18px" align="middle" alt=""/></div>
</ProgressTemplate>
</asp:ModalUpdateProgress><asp:Panel ID="add_kemu" runat="server" style="display:none" >
<p>科目名称:<asp:TextBox ID="add_kemu_name" runat="server"></asp:TextBox>
</p>
<asp:FileUpload ID="AsyncFileUpload1" runat="server"/>
<asp:LinkButton ID="save_kemu" runat="server" Text="保存科目" onclick="save_kemu_Click"></asp:LinkButton>
<asp:LinkButton ID="cancel" runat="server" Text="取消"></asp:LinkButton>
</asp:Panel> </form>
</body>
</html>
Default.aspx.csprotected void addcontrol()
{
string sql = "select * from [obj]";
SqlCommand cmd = new SqlCommand();
int i = 0;
SqlDataReader r = SqlHelper.ExecuteReader(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text, sql, null);
System.Web.UI.WebControls.TableRow tr = new TableRow();
while (r.Read())
{
i = i + 1;
System.Web.UI.WebControls.TableCell tc = new TableCell();
KemuControl kemu = (KemuControl)LoadControl("~/admin/control/KemuControl.ascx");//加载object用户控件;
//PlaceHolder1.Controls.Add(kemu);
kemu.EnableViewState = true;
kemu.ID = r.GetString(1) + Convert.ToString(i);
kemu.kemu_ID = Convert.ToString(r.GetInt32(0));
kemu.shanchu.ID = Convert.ToString(r.GetInt32(0));
kemu.shanchu.Click += new EventHandler(shanchu_Click);
tc.Controls.Add(kemu);
tr.Controls.Add(tc);
if (i % 5 == 0)
{
this.Table1.Rows.Add(tr);
tr = new TableRow();
}
if (i % 5 != 0)
{
this.Table1.Rows.Add(tr);
}
}
r.Close(); } protected void shanchu_Click(object sender, EventArgs e)
{
addcontrol(); }
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
addcontrol();
}
} protected void save_kemu_Click(object sender, EventArgs e)
{
string s = ConfigurationManager.ConnectionStrings["siteconn"].ConnectionString;
SqlConnection conn = new SqlConnection(s);
conn.Open();
SqlCommand sqlcom = conn.CreateCommand();
sqlcom.CommandText = "select * from [obj] where obj_name='" + add_kemu_name.Text + "'";
SqlDataReader r = SqlHelper.ExecuteReader(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text, sqlcom.CommandText, null);
if (r.Read())
{
msgbox.AddMessage("已存在此科目!", msgbox.enmMessageType.Attention);
}
else
{
try
{
string sql = "insert into [obj] (obj_name) values ('" + add_kemu_name.Text + "')";
SqlHelper.ExecuteNonQuery(conn, CommandType.Text, sql, null);
save_img();
//msgbox.AddMessage("添加科目成功!", msgbox.enmMessageType.Success);
addcontrol();
}
catch (Exception ex)
{
msgbox.AddMessage(ex.Message, msgbox.enmMessageType.Error);
}
conn.Close();
}
}
问题:添加科目的时候可以实时刷新动态生成的用户控件,可是点击用户控件的删除按钮是,动态生成的用户控件全部消失。若去掉if (!IsPostBack)则可以执行删除,可是添加删除都要点击两次,回发后才会刷新,谁能帮帮我??
KemuControl.ascx<table class="style1">
<tr>
<td colspan="2">
<asp:Label ID="kemu_name" runat="server"></asp:Label>
</td>
</tr>
<tr>
<td colspan="2">
<asp:Image ID="kemu_img" runat="server" Height="100px" Width="100px" />
</td>
</tr>
<tr>
<td>
<asp:LinkButton ID="edit" runat="server" >编辑</asp:LinkButton>
</td>
<td><asp:LinkButton ID="shanchu" runat="server" >删除</asp:LinkButton>
</td>
</tr>
</table>后台文件 public partial class KemuControl : System.Web.UI.UserControl
{
private string kemu_id;
public string kemu_ID
{
set { this.kemu_id = value; }
get { return kemu_id; } }
public string kemu_Name
{
set { this.kemu_name.Text = value; } }
public string obj_Img
{
set { this.kemu_img.ImageUrl = value; } }
public string shanchu_ID
{
set { this.shanchu.ID = value; }
get { return shanchu.ID; } }
protected void Page_Load(object sender, EventArgs e)
{ //this.del.Click += new EventHandler(del_Click);
string sql = "select * from [obj] where obj_id='" + this.kemu_id + "'";
SqlCommand cmd = new SqlCommand();
SqlDataReader dr = SqlHelper.ExecuteReader(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text, sql, null);
if (dr.Read())
{
this.kemu_name.Text = dr.GetString(1);
this.shanchu.Click += new EventHandler(shanchu_Click);
this.kemu_img.ImageUrl = "../kemu/" + dr.GetString(1) + ".png"; }
dr.Close(); } protected void edit_Click(object sender, EventArgs e)
{ }
protected void shanchu_Click(object sender, EventArgs e)
{
string sql = "delete from obj where obj_id='" + this.kemu_ID + "'";
SqlCommand cmd = new SqlCommand();
using (SqlConnection conn = new SqlConnection(SqlHelper.ConnectionStringLocalTransaction))
{
conn.Open();
SqlHelper.ExecuteNonQuery(conn, CommandType.Text, sql, null);
System.IO.File.Delete(Server.MapPath("/admin/kemu/" + this.kemu_name.Text + ".png")); }
}
}
Default.aspx<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<link href="~/Styles/ModalUpdateProgress.css" rel="stylesheet" type="text/css" />
<link href="~/pix/msgbox/default.css" rel="stylesheet" type="text/css" />
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<uc1:uscMsgBox ID="msgbox" runat="server" ></uc1:uscMsgBox>
<div>
<asp:Table ID="Table1" runat="server">
</asp:Table>
</div> <asp:ModalPopupExtender ID="ModalPopupExtender1" runat="server" TargetControlID="add" PopupControlID="add_kemu"
BackgroundCssClass="modalProgressGreyBackground" CancelControlID="cancel">
</asp:ModalPopupExtender>
<asp:Button ID="add" runat="server" Text="添加" />
</ContentTemplate></asp:UpdatePanel> <asp:ModalUpdateProgress ID="ModalUpdateProgress1" runat="server"
AssociatedUpdatePanelID="UpdatePanel1" BackgroundCssClass="modalProgressGreyBackground">
<ProgressTemplate>
<div class="modalPopup">
Loading..
<img src="../pix/loading.gif" width ="18px" height="18px" align="middle" alt=""/></div>
</ProgressTemplate>
</asp:ModalUpdateProgress><asp:Panel ID="add_kemu" runat="server" style="display:none" >
<p>科目名称:<asp:TextBox ID="add_kemu_name" runat="server"></asp:TextBox>
</p>
<asp:FileUpload ID="AsyncFileUpload1" runat="server"/>
<asp:LinkButton ID="save_kemu" runat="server" Text="保存科目" onclick="save_kemu_Click"></asp:LinkButton>
<asp:LinkButton ID="cancel" runat="server" Text="取消"></asp:LinkButton>
</asp:Panel> </form>
</body>
</html>
Default.aspx.csprotected void addcontrol()
{
string sql = "select * from [obj]";
SqlCommand cmd = new SqlCommand();
int i = 0;
SqlDataReader r = SqlHelper.ExecuteReader(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text, sql, null);
System.Web.UI.WebControls.TableRow tr = new TableRow();
while (r.Read())
{
i = i + 1;
System.Web.UI.WebControls.TableCell tc = new TableCell();
KemuControl kemu = (KemuControl)LoadControl("~/admin/control/KemuControl.ascx");//加载object用户控件;
//PlaceHolder1.Controls.Add(kemu);
kemu.EnableViewState = true;
kemu.ID = r.GetString(1) + Convert.ToString(i);
kemu.kemu_ID = Convert.ToString(r.GetInt32(0));
kemu.shanchu.ID = Convert.ToString(r.GetInt32(0));
kemu.shanchu.Click += new EventHandler(shanchu_Click);
tc.Controls.Add(kemu);
tr.Controls.Add(tc);
if (i % 5 == 0)
{
this.Table1.Rows.Add(tr);
tr = new TableRow();
}
if (i % 5 != 0)
{
this.Table1.Rows.Add(tr);
}
}
r.Close(); } protected void shanchu_Click(object sender, EventArgs e)
{
addcontrol(); }
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
addcontrol();
}
} protected void save_kemu_Click(object sender, EventArgs e)
{
string s = ConfigurationManager.ConnectionStrings["siteconn"].ConnectionString;
SqlConnection conn = new SqlConnection(s);
conn.Open();
SqlCommand sqlcom = conn.CreateCommand();
sqlcom.CommandText = "select * from [obj] where obj_name='" + add_kemu_name.Text + "'";
SqlDataReader r = SqlHelper.ExecuteReader(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text, sqlcom.CommandText, null);
if (r.Read())
{
msgbox.AddMessage("已存在此科目!", msgbox.enmMessageType.Attention);
}
else
{
try
{
string sql = "insert into [obj] (obj_name) values ('" + add_kemu_name.Text + "')";
SqlHelper.ExecuteNonQuery(conn, CommandType.Text, sql, null);
save_img();
//msgbox.AddMessage("添加科目成功!", msgbox.enmMessageType.Success);
addcontrol();
}
catch (Exception ex)
{
msgbox.AddMessage(ex.Message, msgbox.enmMessageType.Error);
}
conn.Close();
}
}
问题:添加科目的时候可以实时刷新动态生成的用户控件,可是点击用户控件的删除按钮是,动态生成的用户控件全部消失。若去掉if (!IsPostBack)则可以执行删除,可是添加删除都要点击两次,回发后才会刷新,谁能帮帮我??
要放在aspx的Page_Init中调用
http://www.cnblogs.com/insus/p/3197194.html