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

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

کاربر سایت

khani

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

گرید ویو

  • شنبه 19 دی 1394
  • 11:18
تشکر میکنم

سلام وقت بخیر

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

ممنون از راهنمایی دوستان

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

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

ایمان مدائنی

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

  • شنبه 19 دی 1394
  • 11:30

شما باید در رویداد RowCommand توسط متد FindControl تکس باکس رو پیدا کنید و مقدار مورد نظر را استخراج کنید

کاربر سایت

khani

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

  • شنبه 19 دی 1394
  • 11:55

میشه بیشتر توضیح بدید؟

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

 protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
    {
       string sharh=FindControl("Text_sharh").ToString();
       Label2.Text = sharh;
    }

id اون تکست باکس هم text_sharh‌هستش

کاربر سایت

ایمان مدائنی

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

  • شنبه 19 دی 1394
  • 12:03

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
    //Determine the RowIndex of the Row whose Button was clicked.
    int rowIndex = Convert.ToInt32(e.CommandArgument);
 
    //Reference the GridView Row.
    GridViewRow row = GridView1.Rows[rowIndex];
 
    //Fetch value of Name.
    string name = (row.FindControl("txtName") as TextBox).Text;
 
    //Fetch value of Country
    string country = GridView1.Rows[rowIndex].Cells[1].Text;
 
    ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert('Name: " + name + "\\nCountry: " + country + "');", true);
}

 

کاربر سایت

khani

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

  • شنبه 19 دی 1394
  • 17:16

مرسی از راهنماییتون ولی هنوز ی مشکلی دارم.تابع findcontrol‌کار نمیکنه.ینی به جای عبارت txtName که درون تابع قرار دادید من id تکس باکسی که داخل گرید ویو هست رو قرار دادم ولی متاسفانه null برمیگردونه.من مقدار اون تکست باکسی که درون گرید ویو هست رو میخوام ولی راه دسترسی بهش رو نمیدونم:(((((

کد به این شکله:


 <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" OnRowCommand="GridView1_RowCommand">
                            <Columns>
                                <asp:BoundField DataField="idkar" HeaderText="idkar" InsertVisible="False" ReadOnly="True" SortExpression="idkar" Visible="False" />
                                <asp:BoundField DataField="mozokar" HeaderText="عنوان کار" SortExpression="mozokar" />
                                <asp:BoundField DataField="mojry" HeaderText="مجری کار" SortExpression="mojry" />
                                <asp:BoundField DataField="olav" HeaderText="اولویت" SortExpression="olav" />
                                <asp:BoundField DataField="dtarif" HeaderText="تاریخ ثبت" SortExpression="dtarif" />
                                <asp:BoundField DataField="ttarif" HeaderText="زمان ثبت" SortExpression="ttarif" />
                                <asp:BoundField DataField="modat" HeaderText="زمان انجام کار" SortExpression="modat" />
                                <asp:BoundField DataField="tozih" HeaderText="جزئیات" SortExpression="tozih" />
                                <asp:TemplateField HeaderText="شرح کار" SortExpression="sharh">
                                    <ItemTemplate>
                                        <asp:TextBox ID="Text_sharh" runat="server"></asp:TextBox>
                                    </ItemTemplate>
                                </asp:TemplateField>
                                <asp:TemplateField HeaderText="اعمال تغییرات">
                                    <ItemTemplate>
                                        <asp:LinkButton ID="LinkButton1" runat="server" CommandName="dte">LinkButton</asp:LinkButton>
                                        <asp:LinkButton ID="LinkButton2" runat="server" CommandName="e" CommandArgument='<%# ((GridViewRow) Container).RowIndex  %>'>Link</asp:LinkButton>
                                        </ItemTemplate>
                                </asp:TemplateField>
                            </Columns>
                        </asp:GridView>

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

 protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        //Determine the RowIndex of the Row whose Button was clicked.
        int rowIndex = Convert.ToInt32(e.CommandArgument);
        if (e.CommandName == "e")
        {
                //Reference the GridView Row.
                GridViewRow row = GridView1.Rows[rowIndex];

                //Fetch value of Name.
                string name = (row.FindControl("Text_sharh") as TextBox).Text;

                //Fetch value of Country
                string country = GridView1.Rows[rowIndex].Cells[8].Text;

                ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert('Name: " + name + "\\nCountry: " + country + "');", true);
                
        }
        else if (e.CommandName == "dte")
        {
            Label2.Text = "del";
        }
    }

 

کاربر سایت

ایمان مدائنی

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

  • شنبه 19 دی 1394
  • 17:25

براتون نمونه ضمیمه کردم

 

فایل های ضمیمه

کاربر سایت

khani

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

  • شنبه 19 دی 1394
  • 17:44

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

کاربر سایت

ایمان مدائنی

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

  • شنبه 19 دی 1394
  • 17:48

جنس ستون رو دقت کنید

مثل نمونه ایجاد کردید ؟

کاربر سایت

khani

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

  • شنبه 19 دی 1394
  • 17:52

تیکه کد شما رو کپی کردم.قبلش هم همین کار شما رو انجام داده بودم.دقیقا همینه

  <asp:TemplateField HeaderText="Name" ItemStyle-Width="150">
                                    <ItemTemplate>
                                        <asp:TextBox ID="txtName" runat="server" />
                                    </ItemTemplate>
                                </asp:TemplateField>
                                <asp:TemplateField HeaderText="اعمال تغییرات">
                                    <ItemTemplate>
                                        <asp:LinkButton ID="LinkButton2" runat="server" CommandName="e" CommandArgument='<%# ((GridViewRow) Container).RowIndex  %>'>Link</asp:LinkButton>                                       
                                    </ItemTemplate>
                                </asp:TemplateField>

 

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

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

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

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