PDA

View Full Version : نمایش اطلاعات GridView در تکست باکس



aleas2
دوشنبه 13 خرداد 1392, 20:48 عصر
دوستان بنده با استفاده از edit columns و گزینه template field یک button به GridView اضافه کردم حالا تو کد این button چی باید بنویسم که کاربر وقتی روش کلیک کرد اطلاعات اون رکورد GridView در تکست باکس نمایش داده شود؟

forestasphalt
دوشنبه 13 خرداد 1392, 22:14 عصر
protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
string id = GridView1.SelectedRow.Cells[1].Text;
var q_bind = db.tblArticles.SingleOrDefault(p => p.fldID.Equals(id));
TextBox1.Text = q_bind.fldTitle;
}

اینو امتحان کن

aleas2
دوشنبه 13 خرداد 1392, 22:33 عصر
عزیز این رویداد اجرا نمیشه وقتی رو button هر کدوم از رکورد ها کلیک میکنی رویداد
protected void edit_Click(object sender, EventArgs e)
{
اجرا میشه

forestasphalt
دوشنبه 13 خرداد 1392, 23:00 عصر
<asp:GridView ID="GridView1" onselectedindexchanged="GridView1_SelectedIndexChanged" runat="server" AutoGenerateColumns="False" DataKeyNames="id" DataSourceID="SqlDataSource1">
<Columns>
<asp:BoundField DataField="id" HeaderText="id" ReadOnly="True" SortExpression="id" />
<asp:BoundField DataField="Soal" HeaderText="Soal" SortExpression="Soal" />
<asp:BoundField DataField="Pasokh1" HeaderText="Pasokh1" SortExpression="Pasokh1" />
<asp:BoundField DataField="Pasokh2" HeaderText="Pasokh2" SortExpression="Pasokh2" />
<asp:BoundField DataField="Pasokh3" HeaderText="Pasokh3" SortExpression="Pasokh3" />
<asp:BoundField DataField="Pasokh4" HeaderText="Pasokh4" SortExpression="Pasokh4" />
<asp:BoundField DataField="Ostad" HeaderText="Ostad" SortExpression="Ostad" />
<asp:BoundField DataField="Dasrs" HeaderText="Dasrs" SortExpression="Dasrs" />
<asp:ButtonField Text="Button" CommandName="Select" />
</Columns>

</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:SlideShowConnectionString %>" SelectCommand="SELECT * FROM [Porsesh]"></asp:SqlDataSource>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>

به جای button میتونی enable select استفاده کنی (روی اون علامت مثلث کلیک کن بعد گزینه enable select رو تیک بزن)



protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{

string id = GridView1.SelectedRow.Cells[1].Text;
TextBox1.Text = id.ToString() ;

}


کاری که باید بکنی
onselectedindexchanged="GridView1_SelectedIndexChanged" به گرید اضافه کن و"CommandName="Select به دکمه button اضافه کنی

aleas2
دوشنبه 13 خرداد 1392, 23:26 عصر
ممنون ولی توسط button نمیشه اینکارو انجام داد؟

صباح فتحی
دوشنبه 13 خرداد 1392, 23:56 عصر
<asp:ButtonField Text="مشتری" ButtonType="Button" CommandName="moshtari" >
کدشو اینطوره:


protected void dgwhome_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName=="moshtari")
{
Varibles var = new Varibles();
int cur = int.Parse(e.CommandArgument.ToString());
int code = int.Parse(dgwhome.Rows[cur].Cells[4].Text.ToString());

var.Customer = code;
Response.Redirect("Customers.aspx?customertype=hm");
}
}

aleas2
سه شنبه 14 خرداد 1392, 00:19 صبح
<asp:ButtonField Text="مشتری" ButtonType="Button" CommandName="moshtari" >
کدشو اینطوره:


protected void dgwhome_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName=="moshtari")
{
Varibles var = new Varibles();
int cur = int.Parse(e.CommandArgument.ToString());
int code = int.Parse(dgwhome.Rows[cur].Cells[4].Text.ToString());

var.Customer = code;
Response.Redirect("Customers.aspx?customertype=hm");
}
}


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

protected void edit_Click(object sender, EventArgs e)

aleas2
سه شنبه 14 خرداد 1392, 00:57 صبح
ضمنا" یه سوال دگه هم داشتم اگر از دوتا enable select استفاده کنی از کجا میفهمی کاربر رو کدوم یکی کلیک کرده که کد مربوط به همون اجرا بشه؟

forestasphalt
سه شنبه 14 خرداد 1392, 09:23 صبح
اگر هدفت اجرا شدنedit_Click باشه میتونی توی این متدی که من نوشیتم یا دوستمون نوشت edit_Click(null,null) فراخوانی کنی
فقط امکان اضافه کردن یه دونه enable select هست

aleas2
سه شنبه 14 خرداد 1392, 09:48 صبح
ببین دوست عزیز بنده میخوام به GridView سه تا گزینه یکی حذف که با کلیک روش رکورد از بانک حذف کنه یکی ویرایش که با کلیک روش اطلاعات در تکست باکس نمایش داده شود و یه چک باکس که بشه چندتا رکورد انتخاب کرد و حذف کرد
چکار کنم؟

aleas2
سه شنبه 14 خرداد 1392, 10:08 صبح
عزیز جز سوال قبل ببین GridView من به این صورته
105102

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


protected void edit_Click(object sender, EventArgs e)
{


}

protected void delete_Click(object sender, EventArgs e)
{


}


protected void CheckBox1_CheckedChanged(object sender, EventArgs e)
{

}


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

forestasphalt
سه شنبه 14 خرداد 1392, 10:37 صبح
دوست عزیز گرید ویو با تیک زدن گزینه enable edit enable delete میتونه اتوماتیک انجام بده
به نظرم نمیتونی توی edit_Click یا اینجور تابع ها استفاده کنی باید از رویداد های خود گرید ویو استفاده کنی مثلا Row_Command بعد بیای نوع Command رو مشخص کنی مثلا نوع select Command برابر با Delete بود بیای پاک کنی یا مثلا Edit بود اینکارو انجام میده
و اگر تمایل دارید میتونید از لینک زیر الهام بگیری یا مثال های خیلی زیادی وجود داره که میتونی استفاده کنی
http://www.codeproject.com/Articles/15948/Editable-Nested-DataGrid
برای تیک زدن چک باکس ها بهتره توی header گرید ویو یه چک باکس بذار که بتونه همه رو انتخاب کنه
مثال های زیادی وجود داره (از جمله تیک خوردن چک باکس ها) که همه این چیزا رو توی گرید ویو پیاده سازی کردن

aleas2
سه شنبه 14 خرداد 1392, 11:31 صبح
شما فقط یه راه حل نمیشناسین که اگر رو button حذف رکورد دوم کابر کلیک کرد
فقط شماره رکورد من بفهمم که کاربر رو button حذف چندمی کلید کرده؟
تو این روال

protected void delete_Click(object sender, EventArgs e)
{


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

forestasphalt
سه شنبه 14 خرداد 1392, 11:39 صبح
نه ندارم
چون گرید ویو یه سری event داره که زمانی که مثلا هر سطر کلیک میشه یه رویداد مخصوص اجرا میشه یا مثلا یک سطر ویرایش میشه یه رویداد اجرا میشه
به نظرم اصراری که به استفاده از delete_Click به این نحو دارید اشتباهه
هر کدوم از عناصر یه آیدی دارن که میتونی ازشون استفاده کن از فایر باگ استفاده کن و آیدی باتن رو میتونی ببینی

ali9698
سه شنبه 14 خرداد 1392, 16:55 عصر
دوستان بنده با استفاده از edit columns و گزینه template field یک button به GridView اضافه کردم حالا تو کد این button چی باید بنویسم که کاربر وقتی روش کلیک کرد اطلاعات اون رکورد GridView در تکست باکس نمایش داده شود؟
اول باید کلید اصلی جدولی که داری اطلاعاتش رو میخونی رو بریزی توی CommandArgument مربوط به Button
بعدش به جای استفاده از رویداد click مربوط به Button از رویداد Command استفاده کن

protected void Button1_Command(object sender, CommandEventArgs e)
{
for (int i = 0; i < GridView1.Rows.Count; i++)
{
if (((Button)GridView1.Rows[i].Cells[0].Controls[0]).CommandArgument.ToString() == e.CommandArgument.ToString())
{
TextBox1.Text = GridView1.Rows[i].Cells[1].Text;
TextBox2.Text = GridView1.Rows[i].Cells[2].Text;
TextBox3.Text = GridView1.Rows[i].Cells[3].Text;
break;
}
}
}

توی خط پنجم هم که نوشتم Cells[0] به جای صفر ایندکس ستون Button رو بزار

aleas2
سه شنبه 14 خرداد 1392, 17:14 عصر
اول باید کلید اصلی جدولی که داری اطلاعاتش رو میخونی رو بریزی توی CommandArgument مربوط به Button
بعدش به جای استفاده از رویداد click مربوط به Button از رویداد Command استفاده کن

protected void Button1_Command(object sender, CommandEventArgs e)
{
for (int i = 0; i < GridView1.Rows.Count; i++)
{
if (((Button)GridView1.Rows[i].Cells[0].Controls[0]).CommandArgument.ToString() == e.CommandArgument.ToString())
{
TextBox1.Text = GridView1.Rows[i].Cells[1].Text;
TextBox2.Text = GridView1.Rows[i].Cells[2].Text;
TextBox3.Text = GridView1.Rows[i].Cells[3].Text;
break;
}
}
}

توی خط پنجم هم که نوشتم Cells[0] به جای صفر ایندکس ستون Button رو بزار

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

ali9698
سه شنبه 14 خرداد 1392, 17:19 عصر
خوب وقتی button رو انتخاب میکنی بالای پنجره properties روی آیکن رویدادهای مربوط به button کلیک کن (دکمه event، به شکل جرقه:لبخند:) تا بعدش بتونی وارد رویداد commad بشی

ali9698
سه شنبه 14 خرداد 1392, 17:22 عصر
من از این روش کلید اصلی رو میریزم توی commad argument

<asp:Button ID="Button1" runat="server" CommandArgument='<%# Eval("code", "{0}") %>' onclick="Button1_Click1" Text="Button" />

کلمه code نام فیلد کلید اصلی توی جدول منه. خودت عوضش کن

aleas2
سه شنبه 14 خرداد 1392, 17:46 عصر
عزیز بازم خطا ! کلا خطا تو خطا شده !!

105118



<asp:Button ID="Button_edit" runat="server" CommandArgument='<%# Eval("user2", "{0}") %>' OnClick="Button1_Click" OnCommand="Button_edit_Command"
Text="ویرایش" />

ali9698
سه شنبه 14 خرداد 1392, 17:59 عصر
یا ایندکس داخل Cells اشتباهه یا ایندکس Controls
اگه توی template field فقط یک Button داری و هیچی دیگه نداری Cells اشتباهه
دقت کن ایندکس داخل Cells باید ایندکس اون ستونی باشه که button رو داره

aleas2
سه شنبه 14 خرداد 1392, 18:06 عصر
تو template field فقط یک باتن هسته و ستون اول از چپ که میشه 0 هسته
105119105120

aleas2
سه شنبه 14 خرداد 1392, 18:09 عصر
عزیز ممنون درست شد اشکال از Controls بود
مقدارش میبایست 1 باشه