نمایش نتایج 1 تا 11 از 11

نام تاپیک: عمل نکردن دکمه در gridview

  1. #1
    کاربر دائمی آواتار morika
    تاریخ عضویت
    اسفند 1386
    محل زندگی
    کرج
    سن
    33
    پست
    736

    Question عمل نکردن دکمه در gridview

    سلام
    من چندتا دکمه تو girview دارم که command name اونهارو خودم تعریف کردم و براشون کد نوشتم. یعنی از دکمه های آماده خود grid نیست. ولی مشکل الان اینه که این دکمه ها تو صفحه اول گرید خوب کار می کنن ولی وقتی گرید میره تو صفحه دوم دیگه دکمه ها کار نمی کنن. مشکل کجاست؟
    ممنون

  2. #2

    نقل قول: عمل نکردن دکمه در gridview

    مشکل توی کدهای شماست.

  3. #3
    کاربر دائمی آواتار Mohammadvb6
    تاریخ عضویت
    اردیبهشت 1385
    محل زندگی
    تهران
    پست
    255

    نقل قول: عمل نکردن دکمه در gridview

    لطفا کدهاتون بگذارید تا باهم بررسی کنیم .

  4. #4
    کاربر دائمی آواتار morika
    تاریخ عضویت
    اسفند 1386
    محل زندگی
    کرج
    سن
    33
    پست
    736

    نقل قول: عمل نکردن دکمه در gridview

    بفرمایین اینم کد
    protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
    {
    MCalendar mc = new MCalendar();
    DateTime dt = new DateTime();

    int index = Convert.ToInt32(e.CommandArgument);
    Label lblId = (Label)GridView1.Rows[index].FindControl("lbl_id");
    Label lblSold = (Label)GridView1.Rows[index].FindControl("lblSold");
    dt = DateTime.Now;

    string itemName = string.Format("{0}{1:HHmmss}", mc.PersianDate.GetDate().ToString(), dt);

    if (e.CommandName == "Update")
    {
    SqlDataSource1.UpdateCommand = "UPDATE [file] SET [up_date] = '" +
    itemName + "' WHERE [id] = '" + lblId.Text + "'";
    SqlDataSource1.Update();
    }
    else if (e.CommandName == "Sale")
    {
    if (lblSold.Text == "0")
    {
    SqlDataSource1.UpdateCommand = "UPDATE [file] SET [sold] = 1 WHERE [id] = '" + lblId.Text + "'";
    }
    else
    {
    SqlDataSource1.UpdateCommand = "UPDATE [file] SET [sold] = 0 WHERE [id] = '" + lblId.Text + "'";
    }

    SqlDataSource1.Update();
    }
    }

  5. #5

    نقل قول: عمل نکردن دکمه در gridview

    ببین وقتی میگی میره صفح دوم دکمه ها کار نمیکنه یعنی اون کویری گرید یه بار بیشتر اجرا نمیشه تعداد اطلاعات بیار.اگه بتونی یه تریس کونی مشکلت می تونی حل کنی فقط تریس کن ببین کجا مشکل داری در غیر اینصورت یه پروژه کوچیک درست کن بزار تو سایت

  6. #6
    کاربر دائمی آواتار morika
    تاریخ عضویت
    اسفند 1386
    محل زندگی
    کرج
    سن
    33
    پست
    736

    نقل قول: عمل نکردن دکمه در gridview

    من قبلا همه این کارارو کردم که حالا اومدم اینجا سوال کردم دیگه. فکرم نکنم دیگه لازم باشه که یه پروژه کوچیک درست کنم بزارم اینجا چون فقط تو این تیکه کد مشکل دارم که اونم کامل گذاشتم. من فقط می خوام ببینم این یه مشکل معمول تو گرید هست و راه حل داره یا نه فقط واسه من پیش اومده.

  7. #7
    کاربر دائمی آواتار Mohammadvb6
    تاریخ عضویت
    اردیبهشت 1385
    محل زندگی
    تهران
    پست
    255

    نقل قول: عمل نکردن دکمه در gridview

    break point بذارید ببینیم کد تا چه مرحله ای اجرل میشه.

  8. #8

    نقل قول: عمل نکردن دکمه در gridview

    نقل قول نوشته شده توسط morika مشاهده تاپیک
    من قبلا همه این کارارو کردم که حالا اومدم اینجا سوال کردم دیگه. فکرم نکنم دیگه لازم باشه که یه پروژه کوچیک درست کنم بزارم اینجا چون فقط تو این تیکه کد مشکل دارم که اونم کامل گذاشتم. من فقط می خوام ببینم این یه مشکل معمول تو گرید هست و راه حل داره یا نه فقط واسه من پیش اومده.
    دقیقا این مشکل که شما میگی برای منم اتفاق افتاده شما یه تیککه کد گذاشتی میگی مشکل اینه . من قول بهتون میدم مشکل تنها این نیست چون کد شما کاری نمیکنه-
    شما دگمه آپدیت گذاشتی صفحاه دوم که میره کار نمیکنه مشکل شما همن دیگه.شما میتونی همون صفحه فقط این بزاری

  9. #9
    کاربر دائمی آواتار morika
    تاریخ عضویت
    اسفند 1386
    محل زندگی
    کرج
    سن
    33
    پست
    736

    نقل قول: عمل نکردن دکمه در gridview

    من مشکلم رو حل کردم. اتفاقا مشکل دقیقا مربوط به همین قسمت هست و هیچ ربطی به جاهای دیگه ندارم. حالا اینجا کاملا توضیح می دم که دوستان استفاده کنن
    قضیه اینه که وقتی ما index رو با کد e.commandargument می گیریم این index در واقع واسه کنترل grid نیست و برای datasource هستش. به خاطر همین وقتی وارد page 2 می شیم index بزرگتر از paging گرید میشه. مثلا اگه paging شما 8تایی باشه تو صفحه دوم ایندکس از 9 شروع می شه و کنترل گرید دیگه اینو نمی تونه واسه datasource ترجمه کنه. راه حلش هم اینه:

    اول تو event : page index changing این دستور رو می نویسیم:
    protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
    GridView1.PageIndex = e.NewPageIndex;
    }

    با این کد به گرید می فهمونیم که از این به بعد هرجی index بهت دادیم رو تو صفحه جدید محاسبه کن
    بعدش زمانی که می خوایم index رو بهشت بدیم یه شرط می زاریم که اگه index بزرگتر از paging ما بود اونو از paging کم کنه تا ایندکس صفحه جدید بدست بیاد.
    یعنی کد قبلی اینجوری تغییر می کنه:
    protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
    {
    MCalendar mc = new MCalendar();
    DateTime dt = new DateTime();

    int index = Convert.ToInt32(e.CommandArgument);
    index = (index > 8) ? index - 8 : index;
    Label lblId = (Label)GridView1.Rows[index].FindControl("lbl_id");
    Label lblSold = (Label)GridView1.Rows[index].FindControl("lblSold");
    dt = DateTime.Now;

    string itemName = string.Format("{0}{1:HHmmss}", mc.PersianDate.GetDate().ToString(), dt);

    if (e.CommandName == "Update")
    {
    SqlDataSource1.UpdateCommand = "UPDATE [file] SET [up_date] = '" +
    itemName + "' WHERE [id] = '" + lblId.Text + "'";
    SqlDataSource1.Update();
    }
    else if (e.CommandName == "Sale")
    {
    if (lblSold.Text == "0")
    {
    SqlDataSource1.UpdateCommand = "UPDATE [file] SET [sold] = 1 WHERE [id] = '" + lblId.Text + "'";
    }
    else
    {
    SqlDataSource1.UpdateCommand = "UPDATE [file] SET [sold] = 0 WHERE [id] = '" + lblId.Text + "'";
    }

    SqlDataSource1.Update();
    }
    }

    فرق این کد با کد قبلی همون شرطی هست که میشه اگه index>8 شد اون منهای 8 کن.
    اینجوری این مشکل حل میشه

  10. #10

    نقل قول: عمل نکردن دکمه در gridview

    خوب خدا رو شکر مشکلتون حل شد.
    تمامی دوستان که پست گذاشتن قصد کمک به شما داشتن .ولی شما هم توقع نداشته باشه با یه تیکه کد براتون معجزه کنند اگه شما هم مشکلتون فهمیدی حتما با تریس کردن بود . حالا دوستان به یه تیکه .کد .........
    اگه گفتم برنامه کوچیک درست کن بزار میخاستم تو سیستم خود براتون مشکل حل کنم که خودتون استاد بنده هستین مشکلتون حل کردین...

  11. #11

    نقل قول: عمل نکردن دکمه در gridview

    سلام
    اتفاقا مشکل دقیقا مربوط به همین قسمت هست و هیچ ربطی به جاهای دیگه ندارم
    اتفاقا مشکل اصلا به این قسمت ارتباطی نداره. (اصلا مشکلی نیست. بیشتر برداشت اشتباه شماس)
    قضیه اینه که وقتی ما index رو با کد e.commandargument می گیریم این index در واقع واسه کنترل grid نیست و برای datasource هستش
    همیشه اینطوری نیست. به خاطر همین گفتم برداشت اشتباه

    اول تو event : page index changing این دستور رو می نویسیم:
    protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
    GridView1.PageIndex = e.NewPageIndex;
    }

    با این کد به گرید می فهمونیم که از این به بعد هرجی index بهت دادیم رو تو صفحه جدید محاسبه کن
    هر وقت خواستید گرید رو صفحه بندی کنید این تیکه کد رو باید بنویسید (شماره صفحه رو برای گرید مشخص میکنه) و این اصلا ارتباطی به موضوع نداره
    بعدش زمانی که می خوایم index رو بهشت بدیم یه شرط می زاریم که اگه index بزرگتر از paging ما بود اونو از paging کم کنه تا ایندکس صفحه جدید بدست بیاد.
    نکنی این کارو یه وقت. چه کاریه آخه. کد پایین رو ببین
    کد HTML:
            <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" OnRowCommand="GridView1_RowCommand" AllowPaging="True" PageSize="4" OnPageIndexChanging="GridView1_PageIndexChanging" DataKeyNames="Id" DataSourceID="SqlDataSource1" EnableModelValidation="True">
                <Columns>
                    <asp:ButtonField CommandName ="deleteCommand" HeaderText="حذف" ButtonType="Button" Text="حذف" />
                    <asp:TemplateField HeaderText="حذف">
                        <ItemTemplate>
                            <asp:Button ID="Button1" runat="server" Text='<%# ((GridViewRow)Container).RowIndex + " :اندیس سطر در گرید" %>' CommandName="deleteCommand" CommandArgument="<%# ((GridViewRow)Container).RowIndex %>" />
                            <asp:Button ID="Button2" runat="server" Text='<%# Container.DataItemIndex + " :اندیس رکورد در دیتاسورس" %>' CommandName="deleteCommand" CommandArgument="<%# Container.DataItemIndex %>" />
                        </ItemTemplate>
                    </asp:TemplateField>
                </Columns>
            </asp:GridView>
    دکمه ای که توسط asp:ButtonField تو گرید قرار میگیره، به صورت خودکار شماره سطر گرید رو تو e.CommandArgument قرار میده
    دکمه اول تو ItemTemplate باز هم شماره سطر گرید رو تو e.CommandArgument قرار میده و فقط تو
    دکمه دوم تو ItemTemplate هستش که مقدار e.CommandArgument میشه شماره رکورد تو دیتا سورس. این هم به خاطر این هستش که شما همه رکوردها رو دارید واکشی میکنید. اگه فقط رکوردهای
    Page جاری رو از دیتابیس واکشی کنید، اونوقت Container.DataItemIndex هم تو همه صفحات از 0 شروع میشه (که معادل همون شماره سطر گرید خواهد بود)

    موفق باشید

تاپیک های مشابه

  1. سوال: دلیل عمل نکردن دکمه close form در پروژه تمرینی
    نوشته شده توسط mehdi_hidden در بخش C#‎‎
    پاسخ: 6
    آخرین پست: جمعه 22 دی 1391, 13:24 عصر
  2. سوال: عمل نکردن کنترل asp:GridView
    نوشته شده توسط farzad3333 در بخش ASP.NET Web Forms
    پاسخ: 2
    آخرین پست: شنبه 12 فروردین 1391, 12:48 عصر
  3. درست کار نکردن دکمه حذف پس از جستجو در GridView
    نوشته شده توسط bahane274 در بخش C#‎‎
    پاسخ: 8
    آخرین پست: جمعه 22 مرداد 1389, 13:55 عصر
  4. عمل نکردن Minimize در فرم اصلی
    نوشته شده توسط realman در بخش برنامه نویسی در Delphi
    پاسخ: 6
    آخرین پست: یک شنبه 20 فروردین 1385, 15:15 عصر
  5. مشکل عمل نکردن رنگ در ویندوز xp
    نوشته شده توسط Mahdi_S_T در بخش برنامه نویسی در Delphi
    پاسخ: 2
    آخرین پست: چهارشنبه 07 بهمن 1383, 02:48 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •