مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

moonfa1392

عضویت از 1394/08/17

مشکل در استفاده از باتن در یوزرکنترل ها

  • یکشنبه 2 مهر 1396
  • 04:21
تشکر میکنم

سلام وقتتون بخیر

توی یوزرکنترل از هر باتنی استفاده میکنم کار نمیکنه دلیلش چیه؟

به عنوان مثال:

<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 هم فقط این مشکل رو داره

پاسخ های این پرسش

تعداد پاسخ ها : 8 پاسخ
کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • یکشنبه 2 مهر 1396
  • 09:32

در UpdatePanel قرار دادید ؟

کاربر سایت

moonfa1392

عضویت از 1394/08/17

  • یکشنبه 2 مهر 1396
  • 13:57

هم توی UpdatePanel تست کردم هم خارج از UpdatePanel ولی مشکل حل نشد

کاربر سایت

moonfa1392

عضویت از 1394/08/17

  • یکشنبه 2 مهر 1396
  • 14:10

زمانی که توی UpdatePanel نباشه، بعد از کلیک کردن روی باتن، محتوای Repeater یا گریدویو مخفی میشن (آدرس صفحه تغییر نمیکنه)

زمانی که توی UpdatePanel باشه، با کلیک روی باتن ها هیچ اتفاقی نمیوفته 

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • یکشنبه 2 مهر 1396
  • 16:06

شما دارید در انتها GridBind را صدا میزنید

یعنی در واقع دستورات شما لغو میشود

کاربر سایت

moonfa1392

عضویت از 1394/08/17

  • یکشنبه 2 مهر 1396
  • 16:12

به این صورت هم که صدا نزنم همون مشکل رو داره:

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 کار نمیکنه 

چه دلیل دیگه ای میتونه داشته باشه؟

کاربر سایت

moonfa1392

عضویت از 1394/08/17

  • یکشنبه 2 مهر 1396
  • 16:16

اصلا کد های مربوط به حذف و ویرایش باتن ها هیچی به کنار!

توی CommandName مربوط به ویرایش یه alert ساده رو می نویسم و توی حذف هم به همین ترتیب یه alert  میذارم باید پیغام رو نمایش بده دیگه...

اصلا وارد دستورات و کد های باتن نمیشه 

هم ریپیتر هم دیتالیست هم گریدویو همشو امتحان کردم کار نمیکنه داخل UserControl استاد

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • یکشنبه 2 مهر 1396
  • 16:25

این رویداد IteCommand در کجا ساختید؟

باید در خود userControl باشه

کاربر سایت

moonfa1392

عضویت از 1394/08/17

  • یکشنبه 2 مهر 1396
  • 16:28

این دقیقا محتوای 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");
        }
    }
}

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)