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

نام تاپیک: اضافه کردن ستون "شماره ردیف" به GridView

  1. #1

    اضافه کردن ستون "شماره ردیف" به GridView

    سلام:
    چطور میشه به Gridview یک ستون به عنوان "شماره ردیف" اضافه کرد بطوریکه از 0 شروع بشه و بطور خودکار به ازای هر رکورد به مقدارش یکی اضافه بشه ؟؟؟

  2. #2
    با سلام

    کد در محیط وب:
    ابتدا یک فیلد ردیف خودت به DataGride اضافه کن

    <asp:GridView ID="grdDeleteNews" runat="server" AllowPaging="True" AutoGenerateColumns="False"
    DataKeyNames="ID" DataSourceID="sqlDeleteNews" BackColor="LightGoldenrodYellow"
    BorderColor="Tan" BorderWidth="1px" CellPadding="2" ForeColor="Black" OnRowDataBound="grdDeleteNews_RowDataBound">
    <Columns>
    <asp:BoundField HeaderText="ردیف">
    <HeaderStyle Font-Bold="False" Font-Names="Tahoma" Font-Size="8pt" ForeColor="#330000" />
    </asp:BoundField>
    </Columns>
    <PagerSettings PageButtonCount="5" />
    <FooterStyle BackColor="Tan" />
    <SelectedRowStyle BackColor="DarkSlateBlue" ForeColor="GhostWhite" />
    <PagerStyle BackColor="PaleGoldenrod" ForeColor="DarkSlateBlue" HorizontalAlign="Center" />
    <HeaderStyle BackColor="Tan" Font-Bold="True" />
    <AlternatingRowStyle BackColor="PaleGoldenrod" />
    </asp:GridView>

    کد در محیط برنامه:
    بعد در رویداد RowDataBound این کد رو بنویس

    protected void grdDeleteNews_RowDataBound(object sender, GridViewRowEventArgs e)
    {
    switch (e.Row.RowState)
    {
    case System.Web.UI.WebControls.DataControlRowState.Norm al:
    case System.Web.UI.WebControls.DataControlRowState.Sele cted:
    case System.Web.UI.WebControls.DataControlRowState.Alte rnate:
    {
    System.Data.DataRowView oDataRowView = (System.Data.DataRowView)e.Row.DataItem;
    if (oDataRowView != null)
    {
    if (e.Row.DataItemIndex >= 0)
    {
    if (e.Row.RowType.ToString() != System.Web.UI.WebControls.ListItemType.Header.ToSt ring() && e.Row.RowType.ToString() != System.Web.UI.WebControls.ListItemType.Footer.ToSt ring())
    {
    e.Row.Cells[3].Text = System.Convert.ToString(e.Row.DataItemIndex + 1);
    e.Row.Cells[3].HorizontalAlign = System.Web.UI.WebControls.HorizontalAlign.Center;
    e.Row.Cells[3].VerticalAlign = System.Web.UI.WebControls.VerticalAlign.Middle;
    e.Row.Cells[3].Font.Bold = true;
    e.Row.Cells[3].Width = System.Web.UI.WebControls.Unit.Pixel(100);
    e.Row.Cells[3].ForeColor = System.Drawing.Color.Green;
    }
    }
    آخرین ویرایش به وسیله Behrouz_Rad : پنج شنبه 25 مرداد 1386 در 20:37 عصر

  3. #3
    کاربر دائمی آواتار mahdi_farhani
    تاریخ عضویت
    مرداد 1383
    محل زندگی
    فولادشهر - اصفهان
    سن
    37
    پست
    1,227
    سلام دوست عزیز . روش این دوستمون استفاده کردن من تا حالا استفاده نکردم . یه روش هم به این صورت ولی نمیدونم کدوم بهتره .
    در قسمت وب یه ستون از نوع Template بزار و داخل اون یه Label اسمش به فرض می زاریم LblRow
    حالا در قسمت RowDataBound و یا RowCrated به این کد رو بنویس

    Dim lblTemp As Label
    If e.Row.RowType = DataControlRowType.DataRow Then
    lblTemp = e.Row.FindControl("LblRow")lblTemp.text=e.rowindex

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

    lblTemp.Text=e.RowIndex * (gridview1.pageindex+1)

  4. #4
    mahdei_farhani عزیز . دستت درد نکنه

    نتونستم این خط از کد شما رو به C#‎ تبدیل کنم . غلط املایی داره ؟؟

    lblTemp = e.Row.FindControl("LblRow")lblTemp.text=e.rowindex

    http://www.codechanger.com/

  5. #5
    فکر نکنم مسئله زیاد پیچیده ای باشه !!

    متاسفانه کدهایی که دوستان دادن اشکال داره ، انگار.

    بقیه مهندسین اگه میتونن کمک کنن ( به زبان C#‎)

  6. #6
    کاربر دائمی آواتار mahdi_farhani
    تاریخ عضویت
    مرداد 1383
    محل زندگی
    فولادشهر - اصفهان
    سن
    37
    پست
    1,227
    سلام دوست عزیز اینم کد #C

    Label lbl;
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
    lbl = (Label)e.Row.FindControl("label1");
    lbl.Text = e.Row.RowIndex.ToString();

    }

  7. #7
    کافی کد زیر را در Grid درج کنید
      <asp:TemplateField HeaderText="ردیف">
    <ItemTemplate>
    <asp:Label ID="Label1" runat="server" Text="<%# (OrderProductGridView.PageIndex * OrderProductGridView.PageSize) + (OrderProductGridView.Rows.Count + 1) %>"></asp:Label>
    </ItemTemplate>
    </asp:TemplateField>

  8. #8
    Mahdie_farhani عزیز .از پیگیری شما ممنونم .

    درست شد .


    با اجازه از این بحث یه نتیجه گیری داشته باشیم :

    همونطور که Mahdie_farhani عزیز قبلا گفتن اول در قسمت وب یه ستون از نوع Template داخل گریدویو اضافه می کنیم بعد داخل داخل ستونی که درست کردیم در قسمت Item Template یه Lable به نام lable1 می گذاریم.

    اگه خاصیت Pagesize گریدویو مقدار 10 داشته باشه ، یعنی تو هر صفحه اجازه نمایش 10 رکورد رو بهش بدیم ، کدی که لازمه در رخداد RowDataBound گریدویو بنویسیم اینجوری میشه :



    protected void GView_RowDataBound(object sender, GridViewRowEventArgs e)
    {
    Label lbl;

    int a;

    if (e.Row.RowType == DataControlRowType.DataRow)
    {
    lbl = (Label)e.Row.FindControl("label1");
    a = e.Row.RowIndex + (GView.PageIndex * 10);
    lbl.Text = a.ToString();
    }
    }



  9. #9
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    آذر 1384
    محل زندگی
    همدان
    پست
    336

  10. #10
    Aferir عزیز ، سلام

    کد شما رو وارد کردم. کد گریدویو اینجوری شد :


    <asp:GridView ID="GridView1" runat="server" AllowPaging="True">
    <Columns>
    <asp:BoundField DataField="NAME" HeaderText="نام" SortExpression="NAME" />
    <asp:TemplateField HeaderText="ردیف">
    <ItemTemplate>
    <asp:Label ID="Label1" runat="server" Text="<%# (OrderProductGridView.PageIndex * OrderProductGridView.PageSize) + (OrderProductGridView.Rows.Count + 1) %>"></asp:Label>
    </ItemTemplate>
    </asp:TemplateField>
    </Columns>
    </asp:GridView>
    این پیغام خطا رو میده و اصلا Debug هم نمیشه !!

    The name 'OrderProductGridView' does not exist in the current context

    روشی که دوستمون Mahdie_farhani ارائه کردن درست بود

  11. #11
    کاربر دائمی آواتار mahdi_farhani
    تاریخ عضویت
    مرداد 1383
    محل زندگی
    فولادشهر - اصفهان
    سن
    37
    پست
    1,227
    سلام ، روشی که دوستمون ارائه کردن به نظر روشی خوبی است و اون اروری که میده مال اینکه باید نام گرید را به جای Order... بزارری .

  12. #12
    آقای mahdei_farhani کاملا درست می گویند . می بایست به جای 'OrderProductGridView' اسم GridView خودتان را بگذارید. ببخشید که بیشتر توضیح ندادم

  13. #13

    نقل قول: اضافه کردن ستون "شماره ردیف" به GridView

    سلام
    یه سوال فوری
    چه طوری می تونم paging رو تو asp.net با کد نویسی فعال کنم (C#‎)ممنون می شم کمکم کنید

  14. #14
    کاربر دائمی آواتار behiunforgiven
    تاریخ عضویت
    مهر 1386
    محل زندگی
    اصفهان
    سن
    38
    پست
    172

    نقل قول: اضافه کردن ستون "شماره ردیف" به GridView

    نقل قول نوشته شده توسط Aferir مشاهده تاپیک
    کافی کد زیر را در Grid درج کنید
      <asp:TemplateField HeaderText="ردیف">
    <ItemTemplate>
    <asp:Label ID="Label1" runat="server" Text="<%# (OrderProductGridView.PageIndex * OrderProductGridView.PageSize) + (OrderProductGridView.Rows.Count + 1) %>"></asp:Label>
    </ItemTemplate>
    </asp:TemplateField>

    از این جواب خیلی خوشم اومد

    بسیار خوب بود مرسی

  15. #15

    نقل قول: اضافه کردن ستون "شماره ردیف" به GridView

    کافیه یه یه ستون به گرید اضافه کنید به شکل زیر آن را پر کنید :
    <asp:TemplateField>
    <ItemTemplate>
    <%# Container.DataItemIndex + 1 %>
    </ItemTemplate>
    </asp:TemplateField>


    (البته تاریخ تاپیک رو دیدم ولی جواد دادن بد نیست حتی به تاپیکهای قدیمی)

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

  1. str_replace , ereg_replace برای "n\" و "r\" و " "
    نوشته شده توسط sweb در بخش PHP
    پاسخ: 1
    آخرین پست: یک شنبه 29 بهمن 1385, 16:30 عصر

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

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