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

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

کاربر سایت

عطایی

عضویت از 1392/05/14

grid view

  • دوشنبه 25 بهمن 1395
  • 11:45
تشکر میکنم

سلام

من یه گرید ویو دارم که داخل item template یه دیتا لیست قرار دادم

حالا میخوام id سطری که کاربر کلیک میکنه رو بذست بیارم

چون دیتالیست دارم و روی اون کلیک میکنم id  دیتالیست رو میده ولی من id گیرید رو میخام

ممنون میشم از راهنماییتون

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

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

ایمان مدائنی

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

  • دوشنبه 25 بهمن 1395
  • 12:32

منظورتون رو متوجه نشدم

داخل گرید میخواهید دیتالیسشت بزارید

کاربر روی چی کلیک میکنه ؟

کاربر سایت

عطایی

عضویت از 1392/05/14

  • دوشنبه 25 بهمن 1395
  • 12:43

                                <asp:GridView  ID="GVcustomer" runat="server" AllowPaging="True" DataKeyNames="Id"  AutoGenerateColumns="False" CssClass="table table-striped table-bordered table-hover dataTable" OnRowCommand="GVcustomer_RowCommand" OnPageIndexChanging="GVcustomer_PageIndexChanging" PageSize="15" OnRowDataBound="GVcustomer_RowDataBound">
                                    <Columns>
                                          <asp:BoundField DataField="Id"  >
                                            </asp:BoundField>
                                        <asp:BoundField DataField="SId" HeaderText="کد مشترک " />
                                        <asp:BoundField DataField="FirstName" HeaderText="نام " />
                                        <asp:BoundField DataField="LastName" HeaderText=" نام خانوادگی" />
                                        <asp:BoundField DataField="OstanTitle" HeaderText=" استان" />
                                        <asp:BoundField DataField="Title" HeaderText=" شهر" />
                                        <asp:TemplateField HeaderText="سوالات">
                                            <ItemTemplate>
                                                <asp:LinkButton ID="LinkButton10" runat="server" class="blue" CommandArgument='<%#Eval("Id") %>' CommandName="DoQue">نمایش سوالات</asp:LinkButton>
                                            </ItemTemplate>
                                        </asp:TemplateField>
                                        <asp:TemplateField HeaderText="عملیات">
                                            <ItemTemplate>

                                                <asp:DataList ID="DataList1" runat="server" RepeatDirection="Horizontal" OnItemCommand="DataList1_ItemCommand" >
                                                    <ItemTemplate>
                                                        <asp:LinkButton ID="LinkButton5" class="pink"  CommandArgument='<%#Eval("Id") %>'   CommandName="select"  OnClientClick="return confirm('آیا مطمئن هستید ؟')"   runat="server"><%#Eval("Title") %></asp:LinkButton>
                                                    </ItemTemplate>
                                                </asp:DataList>
                                                 </ItemTemplate>
                                        </asp:TemplateField>
                                    </Columns>
                                    <FooterStyle CssClass="tableFooter" />
                                    <PagerSettings NextPageText="بعدی" PreviousPageText="قبلی" />
                                    <PagerStyle CssClass="dataTables_paginate paging_bootstrap pagination" HorizontalAlign="Center" VerticalAlign="Middle" />

                                </asp:GridView>

بله استاد داخل گیرید یه دیتالیست هست که یه سری دکمه رو میاره من id  دکمه ر و با command argument میگیرم اما id  سطری از گیرید کهکلیک کرده رو نمیتونم بدست بیارم

کاربر سایت

ایمان مدائنی

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

  • دوشنبه 25 بهمن 1395
  • 12:52

دکمه داخل گرید هست یا دیتالیست ؟

اگر داخل دیتالیست باشه باید از دیتاسورس گرید پر کنید

کاربر سایت

عطایی

عضویت از 1392/05/14

  • دوشنبه 25 بهمن 1395
  • 12:54

دکمه داخل دیتالیست هست پر کردم مشکلی نداره دیتا رو میاره و با item template مدیریت هم میکنم

فقط جایی از کد نویسی میخوام id سطر گرید رو داشته باشم اینو مشکل دارم استاد

کاربر سایت

ایمان مدائنی

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

  • دوشنبه 25 بهمن 1395
  • 12:56

شما باید در CommandArgument در دکمه در دیتالیست id او سطر از گرید را قرار دهید تا در رویداد item_Command در Datalist اون id دریافت بشه

کاربر سایت

عطایی

عضویت از 1392/05/14

  • دوشنبه 25 بهمن 1395
  • 12:59

استاد تو کدم نگاه کنید همین کارو کردم ولی id خود دیتالیست رو میده نه گیرید

کاربر سایت

ایمان مدائنی

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

  • دوشنبه 25 بهمن 1395
  • 13:02

چک کردید هم نام نباشند ؟

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

کاربر سایت

عطایی

عضویت از 1392/05/14

  • دوشنبه 25 بهمن 1395
  • 13:02

خروجی اسنه استاد اون قسمت عملیات که شامل در انتظار تماس و اینا هست کلا دیتالیست هست و id  دارن دکمه ها که با توجه به ای دی عملیات توی item command انحام میشه

اما من میخام توی همون item command آی دی سطری که کلیک شده از گیرید رو داشته باشم

کاربر سایت

عطایی

عضویت از 1392/05/14

  • دوشنبه 25 بهمن 1395
  • 13:03

بله استاد همنام هستند ولی تغییر هم دادم تفاوتی نداره

کاربر سایت

ایمان مدائنی

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

  • دوشنبه 25 بهمن 1395
  • 13:05

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

کاربر سایت

عطایی

عضویت از 1392/05/14

  • دوشنبه 25 بهمن 1395
  • 13:07

نه متاسفانه استادcrying

کاربر سایت

ایمان مدائنی

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

  • دوشنبه 25 بهمن 1395
  • 13:08

متاسفانه دیگه راه حلی به ذهنم نمیرسه

کاربر سایت

عطایی

عضویت از 1392/05/14

  • دوشنبه 25 بهمن 1395
  • 13:09
   protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e)
        {
            if (e.CommandName == "select")
            {
                switch (e.CommandArgument.ToString())
                {
                    case "2":
                        {

                            int ID = Convert.ToInt32(e.CommandArgument.ToString());

این کدم هست id  دقیقا ای دی دیتالیست رو برمیگردونه درستم هست

من میخام id گیرید رو هم داشته باشم

کاربر سایت

عطایی

عضویت از 1392/05/14

  • دوشنبه 25 بهمن 1395
  • 16:19

پاسخ:

توی رویداد row databound مذبوط به گیرید ویو که دیتالیست را پرمیکردم آی دی ستون صفر رو داخل متغییر نگه داشتم و بعد کوئری زیرو نوشتم

int ids = Convert.ToInt32(e.Row.Cells[0].Text);
                   var lable = (from i in mobin.LablePoll where i.Visible == true select new { newid=i.Id ,ids=ids,Title=i.Title}).ToList();
                   DataList gvChild = (DataList)e.Row.FindControl("DataList1");
                    gvChild.DataSource = lable;
                    gvChild.DataBind();

یعنی فیلد ids  را خودم اضافه کردم 

توی صفحه design هم داخل دیتالیست commandargument رو اینجوری تعریف کردم

 CommandArgument='<%#Eval("newid") + ";" +Eval("ids")%>' 

بعد توی رویداد rowdatabound دیتالیست آرگیومنت رو گرفتم و split کردم حالا هم id گیرید بدست اومد هم id دیتالیست.

اینم کد 

 string IDs = (e.CommandArgument.ToString());
                string[] text = IDs.Split(';');
                int IDcustomer = int.Parse(text[1].ToString());
                int argid= int.Parse(text[0].ToString());

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

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

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

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