PDA

View Full Version : چطور با دونستن شماره سطر انتخاب شده ی gridview به مقادیر کنترل های اون سطر دسترسی داشته باشیم؟



دختر کوهستان
شنبه 27 آذر 1389, 14:58 عصر
من یه gridview دارم که مشخصات یه سری کتاب رو نشون میده مثل اسم کتاب و اسم نویسنده و اسم ناشرش. ارتباط ها هم ، بین جدول کتاب و نویسنده یا کتاب و ناشر چند به چنده. اسم کتابم رو به صورت لینک قرار دادم که اگر کاربر روش کلیک کرد بره به صفحه ی بعدی که اطلاعات کامل کتاب رو نشون می ده.چون ارتباطا چند به چنده من برای به دست آوردن اطلاعات کامل کتاب، باید به جز آی دی کتاب،آی دی نویسنده و ناشرش رو هم نگه دارم که می خوام همه ی این کارا در صورت کلیک کاربر روی همون اسم کتاب توی grid انجام بشه.چطور می تونم این مقادیر رو به صفحه ی بعدی پاس بدم؟

کنترلی که در gridview قرار دادم یه جدوله که این طوری پرش کردم:


<ItemTemplate>
<table align="right" border="0" cellpadding="0" cellspacing="0" dir="rtl" width="85%">
<tr>
<td style="width: 10%" valign="top">
<strong>
<asp:Label ID="Label1" runat="server" text='<%#Container.DataItemIndex +1 %>'></asp:Label>.</strong>
</td>
<td style="width: 10%">
<img alt="" border="0" height="75" src="book form.aspx" /></td>
<td style="width: 5%">
</td>
<td style="width: 75%">
<table border="0" cellpadding="0" cellspacing="0" dir="rtl">
<tr>
<td>
<asp:LinkButton ID="LinkButton16" runat="server" CommandName="CName" CommandArgument='<%#Container.DataItemIndex%>' text='<%# databinder.eval(container,"dataitem.bname") %>' PostBackUrl="books.aspx" ></asp:LinkButton>
<br />
<strong style="font-size: 8pt; font-family: 'B Nazanin',Tahoma">??????????: <span
style="font-size: 9pt"><span>
<asp:Label ID="Label3" runat="server" Text='<%# databinder.eval(container,"dataitem.wname")+" " + databinder.eval(container,"dataitem.wfname") %>'></asp:Label></span><br />
<span>????:<asp:Label ID="Label4" runat="server" Text='<%# databinder.eval(container,"dataitem.pname") %>'></asp:Label>
<span dir="ltr">
<asp:Label ID="Label5" runat="server" Text='<%# databinder.eval(container,"dataitem.pdate") %>'></asp:Label></span></span></span></strong></td>
</tr>

</table>
<hr style="border-right: #eeeeee 1px solid; border-top: #eeeeee 1px solid; border-left: #eeeeee 1px solid;
width: 95%; border-bottom: #eeeeee 1px solid; height: 1px; background-color: #484848" />
</td>
</tr>
</table>
</ItemTemplate>

دختر کوهستان
شنبه 27 آذر 1389, 17:07 عصر
با این روش آیا بازم فیلدها قابل شناسایی هستند؟

Y2K
شنبه 27 آذر 1389, 18:01 عصر
شما همون آیدی کتاب رو بصورت کوئری استرینگ به صفحه بعد بفرستی کفایت میکنه

در روش شما فقط با داشتن آی دی کتاب باید بتوان نام نویسنده(ها) یا ناشر(ها) رو از دیتابیس بدست آورد
بدین معنی که به ازای هر کتاب خاص، یک یا چند نویسنده یا ناشر خاص وجود دارند که میتوان با آی دی کتاب اون چند ناشر یا نویسنده را بیابیم




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

کد زیر


Label lbl =(Label)gridview.Items[RowIndex].Cells[CellIndex].FindControl("Label3");
string nameauther=lbl.Text;
RowIndex=شماره ردیف انتخاب شده
CellIndex= شماره ستون ItemTemplate

دختر کوهستان
شنبه 27 آذر 1389, 20:21 عصر
درسته . برای به دست آوردن اسم نویسنده باید حتما آی دی کتاب رو داشته باشی.اما همون طوری که گفتم می خوام از grid استفاده کنم که معلوم بشه کاربر کتاب نوشته شده توسط کدوم نویسنده رو می خواد.
توی این تیکه کدی که نوشتین من هر کاری کردم سیستم Items رو به عنوان متدی از grid نشناخت.شماره سطر با همون رویداد rowcommand و کلیک بر روی لینک باتن به دست میاد. اما من متوجه نشدم که چطور باید cellindex رو به دست بیارم.چون grid ام فقط یه itemtemplate داره . داخل اونم دوتا جدول تو در تو که کنترل ها اونجا هستند.

Y2K
شنبه 27 آذر 1389, 20:49 عصر
آیتم متد نیست، پراپرتی هست
بجای Items کلمه Rows رو بنویس
آیتم برای دیتاگرید هست
در رابطه با CellIndex هم باید یک عدد ثابت بدی و چون گفتی گرید یه دونه سلول داره و اون هم itemtemplate هست کافیه بجاش عدد صفر رو بنویسی