سلام وقتتون بخیر
توی یوزرکنترل از هر باتنی استفاده میکنم کار نمیکنه دلیلش چیه؟
به عنوان مثال:
<table> <tr> <th>کد</th> <th>عنوان روزنوشته</th> <th>تاریخ درج</th> <th>آخرین بروزرسانی</th> <th>ویرایش</th> <th>حذف</th> </tr> <asp:Repeater ID="Repeater1" OnItemCommand="Repeater1_ItemCommand" runat="server"> <ItemTemplate> <tr> <td><%# Eval("id") %></td> <td> <a href="../FullContent.aspx?id=<%# Eval("id") %>" target="_blank"> <%# Eval("title") %> </a> </td> <td><%# Eval("datereg") %></td> <td><%# Eval("dateupdate") %></td> <td> <asp:LinkButton ID="LinkButton1" CommandName="edit" CommandArgument='<%# Eval("id") %>' runat="server">ویرایش</asp:LinkButton> </td> <td> <asp:LinkButton ID="LinkButton2" CommandName="delete" CommandArgument='<%# Eval("id") %>' runat="server">حذف</asp:LinkButton> </td> </tr> </ItemTemplate> </asp:Repeater> </table>
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { titlebind(); Gridbind(); successbox.Style.Add("display", "none"); } } public void titlebind() { DAL run = new DAL(); string sqltext = string.Format("select * from tbl_controls where id={0}", Request.QueryString["id"]); Repeater3.DataSource = run.ExecuteQuery(sqltext); Repeater3.DataBind(); } public void Gridbind() { DAL run = new DAL(); string sqltext = "select * from Tbl_Content where notactive='false' and bin='false'"; Repeater1.DataSource = run.ExecuteQuery(sqltext); Repeater1.DataBind(); } protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e) { if (e.CommandName == "edit") { Response.Redirect(string.Format("panel.aspx?id=56&contentid={0}", e.CommandArgument)); } else { int id = Convert.ToInt32(e.CommandArgument); string st = string.Format("update tbl_content set bin='true' where ID={0}", id); DAL d1 = new DAL(); d1.ExecNonQuery(st); successbox.Style.Add("display", "block"); Gridbind(); } }
نه دکمه حذف و نه دکمه ویرایش کار نمیکنن، چه لینک باتن چه باتن هرچی میذارم وقتی روش کلیک میکنم فقط محتوای ریپیتر یا گریدویو مخفی میشه. حتی paging هم که میذارم روی شماره صفحه که کلیک می کنم محتوای ریپیتر یا گریدویو مخفی میشه
توی web user control هم فقط این مشکل رو داره
در UpdatePanel قرار دادید ؟
هم توی UpdatePanel تست کردم هم خارج از UpdatePanel ولی مشکل حل نشد
زمانی که توی UpdatePanel نباشه، بعد از کلیک کردن روی باتن، محتوای Repeater یا گریدویو مخفی میشن (آدرس صفحه تغییر نمیکنه)
زمانی که توی UpdatePanel باشه، با کلیک روی باتن ها هیچ اتفاقی نمیوفته
شما دارید در انتها GridBind را صدا میزنید
یعنی در واقع دستورات شما لغو میشود
به این صورت هم که صدا نزنم همون مشکل رو داره:
protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e) { if (e.CommandName == "edit") { Response.Redirect(string.Format("panel.aspx?id=56&contentid={0}", e.CommandArgument)); } else { int id = Convert.ToInt32(e.CommandArgument); string st = string.Format("update tbl_content set bin='true' where ID={0}", id); DAL d1 = new DAL(); d1.ExecNonQuery(st); successbox.Style.Add("display", "block"); } }
مشکل ظاهرا از کد هام نیست استاد. همین کد رو توی Default.aspx کپی میکنم بدون هیچ ایرادی کار میکنه
توی WebUserControl کار نمیکنه
چه دلیل دیگه ای میتونه داشته باشه؟
اصلا کد های مربوط به حذف و ویرایش باتن ها هیچی به کنار!
توی CommandName مربوط به ویرایش یه alert ساده رو می نویسم و توی حذف هم به همین ترتیب یه alert میذارم باید پیغام رو نمایش بده دیگه...
اصلا وارد دستورات و کد های باتن نمیشه
هم ریپیتر هم دیتالیست هم گریدویو همشو امتحان کردم کار نمیکنه داخل UserControl استاد
این رویداد IteCommand در کجا ساختید؟
باید در خود userControl باشه
این دقیقا محتوای UserControl هست که رویداد ItemCommand مال Repeater1 هست:
<div class="location"> <div class="icon"></div> <div class="x"></div> <p class="text">شما اینجا هستید</p> <div class="flash"></div> <asp:Repeater ID="Repeater3" runat="server"> <ItemTemplate> <a href="panel.aspx?id=<%# Eval("id") %>"> <h1><%# Eval("title") %></h1> </a> </ItemTemplate> </asp:Repeater> </div> <div class="successbox" id="successbox" runat="server"> <div class="x3"></div> <p class="success">روزنوشته مورد نظر با موفقیت حذف شد و به زباله دان انتقال یافت.</p> </div> <div class="managementlist"> <p>لیست روزنوشته های قبلی</p> <table> <tr> <th>کد</th> <th>عنوان روزنوشته</th> <th>تاریخ درج</th> <th>آخرین بروزرسانی</th> <th>ویرایش</th> <th>حذف</th> </tr> <asp:Repeater ID="Repeater1" OnItemCommand="Repeater1_ItemCommand" runat="server"> <ItemTemplate> <tr> <td><%# Eval("id") %></td> <td> <a href="../FullContent.aspx?id=<%# Eval("id") %>" target="_blank"> <%# Eval("title") %> </a> </td> <td><%# Eval("datereg") %></td> <td><%# Eval("dateupdate") %></td> <td> <asp:LinkButton ID="LinkButton1" CommandName="edit" CommandArgument='<%# Eval("id") %>' runat="server">ویرایش</asp:LinkButton> </td> <td> <asp:LinkButton ID="LinkButton2" CommandName="delete" CommandArgument='<%# Eval("id") %>' runat="server">حذف</asp:LinkButton> </td> </tr> </ItemTemplate> </asp:Repeater> </table> </div> <footer> <p> تمامی حقوق مادی و معنوی متعلق به K1 in USA می باشد.<br /> طراحی و برنامه نویسی وب سایت : صادق جعفری </p> </footer>
اینم دقیقا محتوای UserControl.ascx.cs هست :
using System; using System.Collections.Generic; using System.Configuration; using System.Data; using System.Data.SqlClient; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; public partial class management_controls_managementcontent : System.Web.UI.UserControl { protected void Page_Load(object sender, EventArgs e) { string constring = ConfigurationManager.ConnectionStrings["dbconnection"].ConnectionString; using (SqlConnection con = new SqlConnection(constring)) { using (SqlCommand cmd = new SqlCommand(string.Format("Select title From tbl_controls Where id={0} ", Request.QueryString["id"]), con)) { cmd.CommandType = CommandType.Text; con.Open(); Page.Title = cmd.ExecuteScalar().ToString(); con.Close(); } } if (!IsPostBack) { titlebind(); successbox.Style.Add("display", "none"); Gridbind(); } } public void titlebind() { DAL run = new DAL(); string sqltext = string.Format("select * from tbl_controls where id={0}", Request.QueryString["id"]); Repeater3.DataSource = run.ExecuteQuery(sqltext); Repeater3.DataBind(); } public void Gridbind() { DAL run = new DAL(); string sqltext = "select * from Tbl_Content where notactive='false' and bin='false'"; Repeater1.DataSource = run.ExecuteQuery(sqltext); Repeater1.DataBind(); } protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e) { if (e.CommandName == "edit") { Response.Redirect(string.Format("panel.aspx?id=56&contentid={0}", e.CommandArgument)); } else { int id = Convert.ToInt32(e.CommandArgument); string st = string.Format("update tbl_content set bin='true' where ID={0}", id); DAL d1 = new DAL(); d1.ExecNonQuery(st); successbox.Style.Add("display", "block"); } } }
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)