PDA

View Full Version : سوال: خواندن یک ستون از یک سطر دیتاگریدویو در صورت انتخاب آن سطر توسط کاربر



modern_amin
شنبه 23 مهر 1390, 09:48 صبح
با سلام به هموطنان عزیز
هرچی جستجو کردم چیزی پیدا نکردم
.
من میخام وقتی کاربر روی هر کدوم از سطرهای دیتاگریدویو من که مربوط به خبرها هست کلیک کرد من یک ستون خاص اون سطر رو بخونم (آیدنتیتی ) و به فرم دیگه ارسال کنم و براساس اون از دیتابیسم سلکت بگیرم و کل خبر و عکس رو نشون بدم
.
چطور میتونم تو کلیک روی دیتاگریدویو کد بنویسم و تشخیص بدم کدوم سطر رو انتخاب کرده تا بر اساس او ستون مورد نظر در سطر انتخابی رو بخونم
.
لطفا راهنمایی کنید (در صورت امکان c#)

modern_amin
شنبه 23 مهر 1390, 11:25 صبح
.
.
چطور میشه وقتی کاربر رو یه سطر کلیک کرد مقدار یکی از ستون های همون سطر انتخابی رو بخونم؟؟؟

Saman Hashemi
شنبه 23 مهر 1390, 12:06 عصر
با استفاده از رویداد SelectedIndexChanged...!

ایمان مدائنی
شنبه 23 مهر 1390, 12:12 عصر
نه دوست من
وقتي كاربر روي يك سطر روي كليدي كليك كنه رويداد ITEMCOMMAND فراخواني ميشه
در اون رويداد آيتم E حاوي مقدار ارسال شده است
در اون رويداد هر بلايي بخواهي ميتوني سر اطلاعات اون رديف بياري

BahmanDB
شنبه 23 مهر 1390, 12:22 عصر
با استفاده از رویداد SelectedIndexChanged...!


+



string myId = gridusers.Rows[e.NewSelectedIndex].Cells[0].Text;
Server.Transfer("test.aspx?id="+myId );

modern_amin
شنبه 23 مهر 1390, 13:28 عصر
با تشکر از همه دوستان که جواب دادند
.
دوست عزیز اون کد جواب نداد ، یه مقدار خیلی کوچیک تغییر دادم و به دیتاگرید قابلیت SELECT رو اضافه کردم با این کد جواب داد

protectedvoid GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
string myId = GridView1.SelectedRow.Cells[1].Text;
Session.Add("Msg_", myId);
Response.Redirect("~/test_page2.aspx");


}


.
ولی من نمیخام تو دیتاگرید دکمه SELECT بزارم
میخام وقتی کلیک کرد باز بشه
کسی راه حلی داره؟؟؟؟

BahmanDB
شنبه 23 مهر 1390, 14:22 عصر
يعني سطر جاري حالت textbox بشه ؟

modern_amin
یک شنبه 24 مهر 1390, 10:22 صبح
يعني سطر جاري حالت textbox بشه ؟

منظورم اینه روی هر سطر که کلیک کرد یک سری اتفاقات بیفته
مثلا تو Datagrid_rowClick

modern_amin
یک شنبه 24 مهر 1390, 12:59 عصر
سلام دوست عزیز ، از پاسختون ممنونم
.
البته تو c# این قابلیت ها هست ولی دیتاگریدی که تو asp.net میسازم این EVENT هارو نداره
.
شما از کامپوننت خاصی استفاده میکنید یا.....

fakhravari
یک شنبه 24 مهر 1390, 13:17 عصر
با سلام
اگه منظورشما رو درست گرفته باشم.
شما به این شکل می خواهید خوب از تمپلت گرید ویو استفاده کنید من خودم به این شکل استفاده می کنم/
<asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="False"
ShowHeader="False" BorderStyle="None" GridLines="None"
ShowHeaderWhenEmpty="True">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<div id="entry-2527" class="post">
<span class="post-top"></span>
<div class="entry">
<h2 class="posttitle"><%# HttpUtility.HtmlEncode(Eval("Title"))%></h2>
<p><%# HttpUtility.HtmlEncode(Eval("Abstract"))%></p>
<div class="post-more-link">مشاهده <a target="_self" href="DisplayNews.aspx?NewsID=<%# HttpUtility.HtmlEncode(Eval("NewsID"))%>">دامه مطلب</a></div>
<div class="post-footer"></div>
</div><span class="post-btt"></span>
</div>

<div class="meta">
<ul>
<li class="date" ><%# HttpUtility.HtmlEncode(Eval("AddDate"))%></li>
<li class="comment">شماره : <%# HttpUtility.HtmlEncode(Eval("NewsID"))%></li>
<li class="categry" style="text-align:right;">
افراد رای دهنده: [ <%# HttpUtility.HtmlEncode(Eval("CountOfPostID"))%> ] جمع امتیاز : [ <%# HttpUtility.HtmlEncode(Eval("SumOfRating"))%> ]
</li>
<li class="comment">
<a target="_blank" href="CommentADD.aspx?NewsID=<%# HttpUtility.HtmlEncode(Eval("NewsID"))%>">[0]نظر</a>
</li>
</ul>

</div>
</ItemTemplate>
</asp:TemplateField>
</Columns>

</asp:GridView>

Saman Hashemi
یک شنبه 24 مهر 1390, 13:19 عصر
نه این کاربر فکر کرده C# با ASP..NET فرقی نداره از C# برات مثال زده در حالی که این Event ها در ASP موجود نیست...!

fakhravari
یک شنبه 24 مهر 1390, 13:25 عصر
یا اگه تمپلت استفاده نمیکنی
از این کد استفاده کن
<asp:HyperLinkField DataNavigateUrlFields="LinkID" Target="_blank"
DataNavigateUrlFormatString="Default.aspx?LinkID={0}" HeaderText="LinkID"
Text="LinkID" />

faravaghi
یک شنبه 24 مهر 1390, 13:50 عصر
سلام دوست عزیز،
شرمنده من با ASP کار نکردم. فکر کردم شما توی ویندوز پرسیدین.
از تمامی دوستان عذرخواهم

fakhravari
یک شنبه 24 مهر 1390, 13:54 عصر
سلام
faravaghi اجب حالی دادی دمت گرم:لبخند:

modern_amin
یک شنبه 24 مهر 1390, 13:55 عصر
با تشکر از پاسختون
بله، من منظورم یک کد بود که مثل اون دستور تو سی شارپ کار کنه ، البته تو کدپروژکت دیتاگریدی به پستم خورد که اگر با ماوس از روش عبور میکردیم (mouseover) ، کدهایی رو اجراء میکرد


یا اگه تمپلت استفاده نمیکنی
از این کد استفاده کن
<asp:HyperLinkField DataNavigateUrlFields="LinkID" Target="_blank"
DataNavigateUrlFormatString="Default.aspx?LinkID={0}" HeaderText="LinkID"
Text="LinkID" />
من زیاد با asp آشنا نیستم . این کدی که نوشتید دیتاگرید رو بصورت هایپرلینک میکنه؟؟
یه سوال دیگم اینه آیا میشه datagrid رو ثابت کرد (dock) تا اگر اطلاعات یک ستون زیاد شد جابجا نشه

fakhravari
یک شنبه 24 مهر 1390, 14:06 عصر
بله
دیتاگرید رو بصورت هایپرلینک میکنه که کاربر روی مثال ادامه مطلب کلیک کرد وارد پیج بعدی شه. ad new item
در مورد dock هم قابل اجراع است

BahmanDB
یک شنبه 24 مهر 1390, 14:48 عصر
دوست عزيز در لينك زير كه اعمال گريد ويو هست فكر كنم خيلي به دردتون بخوره .
دوست عزيزمون اقاي راد زحمت اينو كشيدن
http://barnamenevis.org/showthread.php?50594-%D8%AF%D8%A7%D9%88%D9%86%D9%84%D9%88%D8%AF-%DA%A9%D8%AF-%D8%A7%D8%B9%D9%85%D8%A7%D9%84-%D9%85%D8%AA%D8%AF%D8%A7%D9%88%D9%84-%D8%A8%D8%A7-GridView-%D8%AF%D8%B1-ASP.NET-2.0&p=692821#post692821

modern_amin
یک شنبه 24 مهر 1390, 17:46 عصر
دوست عزيز در لينك زير كه اعمال گريد ويو هست فكر كنم خيلي به دردتون بخوره .
دوست عزيزمون اقاي راد زحمت اينو كشيدن
http://barnamenevis.org/showthread.php?50594-%D8%AF%D8%A7%D9%88%D9%86%D9%84%D9%88%D8%AF-%DA%A9%D8%AF-%D8%A7%D8%B9%D9%85%D8%A7%D9%84-%D9%85%D8%AA%D8%AF%D8%A7%D9%88%D9%84-%D8%A8%D8%A7-GridView-%D8%AF%D8%B1-ASP.NET-2.0&p=692821#post692821

برنامه فوق العاده زیبایی بود ، تو سایتهای خارجی هم به این زیبایی و سادگی همراه با انواع قابلیت ها ندیده بدم
این دیتا گرید و یک دیتاگرید دیگه ساخت آقای کریم عروجی بهترین دیتاگریدهایی هستند که تو asp.net دیدم
.
.

کد ثابت کردن ستونها رو من پیدا نکردم؟؟؟؟؟؟

modern_amin
دوشنبه 25 مهر 1390, 11:57 صبح
من برای این دنبال ثابت کردن ستونها (dock) میگردم چون وقتی محتویات یک ستون من زیاد باشه با اینکه چندخطی هم میشه ولی بازم scrool میفته و از صفحه بیرون میزنه <---->
من فکر میکردم شاید اگه دیتاگرید من بصورت عمودی نباشه و بصورت افقی نمایش بدم مشکلم حل هست ، اون روش و پیاده کردم بهتر شد ولی همون مشکل و داره
.
.
آیا میشه تو دیتاگرید مشخص کرد زمان لود اطلاعات یک ستون خاص که متن اون زیاده ، فقط تا 30 کارکتر اول اونرو نشون بده؟؟
و آیا میشه من موقع خواندن اطلاعات ورودی وقتی مثلا به کارکتر 200 رسیدم به خط بعد اومده و باهمین روش کل اطلاعات رو لود کنم؟؟