PDA

View Full Version : گرفتن ID دیتا بیس در گرید ویو



81579001
پنج شنبه 18 تیر 1394, 15:08 عصر
سلام
در دیتا گریدویو از کد


DataGrid1.DataKeyField = "id";

و


int id = (int)DataGrid1.DataKeys[e.Item.ItemIndex];


Label1.Text = id.ToString();

id مورد نظر را دریاف کنیم
حالا در گرید ویو ( GridView )
چگونه می توانم مقدار id را دریافت کنم؟
متشکر
در ضمن جستجو انجام شده ، نتیجه به این تاپیک رسیدم

notlikeothers
پنج شنبه 18 تیر 1394, 22:46 عصر
سلام


Int Id = ِgridviewname.DataKeys[(int)e.Item.ItemIndex].ToString();

81579001
جمعه 19 تیر 1394, 15:27 عصر
سلام
ممنون از جوابی که دادید
اما همین دستور هم جواب نداد
مسئله این است که ، دستوری که شما ارائه کردید در دیتا گرید کار میدهد ،
اما در گریدویو خیر ، چیزی که در سایت گشتم و به جواب نرسیدم همین است .
همه برای دیتاگرید کد ، دستور و مثال دارند اما گریدویو نه
دستور کامل


protected void gdvEshow_RowCommand(object sender, GridViewCommandEventArgs e)
{

int Id = gdvEshow.DataKeys[(int)e.Item.ItemIndex].ToString();

}


پیام را بصورت عکس گذاشتم
133113
ممنون

81579001
شنبه 20 تیر 1394, 14:17 عصر
یک سؤال مطرح هست که آیا می شود با اصلاح دستورات مربوط به دیتاگرید آنرا در گریدویو استفاده کرد؟

arash_flag
یک شنبه 21 تیر 1394, 18:24 عصر
سلام دوست عزیز
من منظور شما رو نفهمیدم لطفا واضح و کاملتر توضیح بدین؟

اگه منظور شما اینه که چگونه فیلد id گرید ویو رو بخونیم
بفرما :

r = int.Parse(GridView1.Rows[1].Cells[1].Text);

81579001
دوشنبه 22 تیر 1394, 04:05 صبح
سلام
ممنون از زحمتی که کشیدید
مثلاً
اگر بخواهیم سطر مشخصی از دیتابیس را حذف کنیم مقدار id آن سطر چطور بدست میاد؟

ویا معادل این دستور


int id = (int)DataGrid1.DataKeys[e.Item.ItemIndex];

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

daffy_duck376
دوشنبه 22 تیر 1394, 05:11 صبح
اگه میخواید تو event row commanr استفاده کنید بهترین کار اینه اون رو از طریق command argument بدست بیارید

protected void GridView3_RowCommand(object sender, GridViewCommandEventArgs e)
{
int id = Convert.ToInt32(e.CommandArgument.ToString());
{

81579001
دوشنبه 22 تیر 1394, 16:32 عصر
سلام
ممنون از جوابتون
اما بنده ID دیتابیس را می خواهم بگیریم نه سطر گرید ویو را
این دستور شماره سطر گرید ویو را می دهد نه دیتا بیس!!!

شاید با این دو عکس گویاتر باشد

133213
133214
متشکرم

notlikeothers
دوشنبه 22 تیر 1394, 22:02 عصر
سلام. من خودم از دیتا گرید استفاده که میکنم همون کدی که نوستم استفاده میکنم در مورد سوال شما که گرید ویو استفاده میکنید یه سری لینک میدم نگاه کنید من خودم الان بهvsدسترسی ندارم تست کنم
http://stackoverflow.com/questions/2818203/get-datakey-values-in-gridview-rowcommand
http://stackoverflow.com/questions/21277969/getting-datakey-value-for-each-row-in-grid-view

81579001
سه شنبه 23 تیر 1394, 03:46 صبح
سلام
ممنون از راهنمایتون
اما موفق نشدم

daffy_duck376
سه شنبه 23 تیر 1394, 09:23 صبح
سلام
ممنون از جوابتون
اما بنده ID دیتابیس را می خواهم بگیریم نه سطر گرید ویو را
این دستور شماره سطر گرید ویو را می دهد نه دیتا بیس!!!

شاید با این دو عکس گویاتر باشد

133213
133214
متشکرم

ربطی نداره - شما یا ستون از نوع template اضافه کنید . در اون یک buttom بزارید و از قسمت دیتاباینینگ کامند ارگومنت رو به ای دی نسبت بدید و کدی که نوشتم رو استفاده کنید

81579001
سه شنبه 23 تیر 1394, 16:14 عصر
1 اینکه بنده می خواهم که چون از چک باکس استفاده می کنم
در صورتی که کاربر خواست ویرایش دهد بتواند از این طریق انجام دهد
2 برای ارتباط گرید ویو با دیتا بیس هم از بصورت کد نویسی می باشد نه ویزارد
3 دستور شما انجام شد اما فقط بر اساس سطر گریدویو نمایش می دهد نه آی دی دیتابیس
کد های انجام شده


<asp:GridView ID="gdvEshow" runat="server" AutoGenerateColumns="False" BackColor="LightGoldenrodYellow" BorderColor="Tan" BorderWidth="0px" CaptionAlign="Right" CellPadding="2" EnableTheming="True" ForeColor="Black" Height="311px" PageIndex="2" PageSize="2" Width="665px" OnRowCommand="gdvEshow_RowCommand1">
<AlternatingRowStyle BackColor="PaleGoldenrod" />
<Columns>
<asp:BoundField DataField="id" HeaderText="id" />
<asp:BoundField DataField="asm" HeaderText="اسم" />
<asp:BoundField AccessibleHeaderText="cod" DataField="cod" HeaderText="کد" />
<asp:CheckBoxField DataField="a" HeaderText="a" />
<asp:CheckBoxField DataField="b" HeaderText="b" />
<asp:CheckBoxField DataField="c" HeaderText="c" />
<asp:TemplateField>
<ItemTemplate>
<asp:Button ID="Button1" runat="server" Text="Button" CommandArgument='<%# DataBinder.Eval(Container, "RowIndex") %>' />
</ItemTemplate>
</asp:TemplateField>
</Columns>
<FooterStyle BackColor="Tan" />
<HeaderStyle BackColor="Tan" Font-Bold="True" />
<PagerSettings Mode="NumericFirstLast" />
<PagerStyle BackColor="PaleGoldenrod" ForeColor="DarkSlateBlue" HorizontalAlign="Center" />
<SelectedRowStyle BackColor="DarkSlateBlue" ForeColor="GhostWhite" />
<SortedAscendingCellStyle BackColor="#FAFAE7" />
<SortedAscendingHeaderStyle BackColor="#DAC09E" />
<SortedDescendingCellStyle BackColor="#E1DB9C" />
<SortedDescendingHeaderStyle BackColor="#C2A47B" />
</asp:GridView>



متشکرم

daffy_duck376
چهارشنبه 24 تیر 1394, 06:38 صبح
RowIndex را به ID تبدیل کن درست میشه

81579001
شنبه 27 تیر 1394, 03:18 صبح
سلام
متشکرم
تغییر را انجام دادم همچنین این دستورات را نوشتم


protected void gdvEshow_RowCommand1(object sender, GridViewCommandEventArgs e)
{
int id = Convert.ToInt32(e.CommandArgument.ToString());


Label1.Text = " ID= " + id;
}

که این خطا را دارد


Input string was not in a correct format.Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.FormatException: Input string was not in a correct format.

Source Error:



Line 48: protected void gdvEshow_RowCommand1(object sender, GridViewCommandEventArgs e)
Line 49: {
Line 50: int id = Convert.ToInt32(e.CommandArgument.ToString());
Line 51:
Line 52: Label1.Text = " ID= " + id;



ممنون

81579001
جمعه 02 مرداد 1394, 08:38 صبح
سلام
یافتم
جوینده یابنده است


Label1.Text = "id=" + Convert.ToInt32(GridView1.DataKeys[e.RowIndex].Value.ToString());