PDA

View Full Version : بدست آوردن id سطر GridView



jaykob
یک شنبه 19 تیر 1390, 17:27 عصر
سلام

من برای بدست آوردن id هر سطر از grid view در خود کنترل این کد را می زارم :



<asp:TemplateField>
<ItemTemplate>
<asp:Button CommandName='Details2' CommandArgument='<%#Eval("id") %>' ID="btnName" runat="server" Text="نام" />
</ItemTemplate>
</asp:TemplateField>



و برای کد ش هم به شکل زیر می نویسم :



protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
GridViewRow row = (GridViewRow)((Control)e.CommandSource).Parent.Par ent;
int rowid = row.DataItemIndex;
Response.Write(rowid.ToString());

}


اما مشکل من این است که این موضوع مقدار id دیتابیس را بر نمی گرداند فقط از روی ردیف اطلاعات موجود بر می گرداند به طور مثال اگر من id در دیتابیس از 200 شروع بشه این کد این مقدار رو 0 بر می گردونه و 201 را 1 بر می گرداند که بر اساس سطر های خود grid هست . به چه شکل می تونم خود id را به دست بیارم .

با تشکر

fa_karoon
یک شنبه 19 تیر 1390, 17:56 عصر
شما کافی ست که DataKeyname گرید ویو رو برابر فیلد ID جدول بذارین بعد در رویداد SelectedIndexChanged مربوط به گرید ویو مقدار GridView.SelectedValue رو بخونید که برابر ID همان رکورد در جدول خواهد بود

jaykob
دوشنبه 20 تیر 1390, 19:11 عصر
شما کافی ست که DataKeyname گرید ویو رو برابر فیلد ID جدول بذارین بعد در رویداد SelectedIndexChanged مربوط به گرید ویو مقدار GridView.SelectedValue رو بخونید که برابر ID همان رکورد در جدول خواهد بود

سلام دوست عزیز

با تشکر . من کد زیر رو نوشتم :


string rowid2 = GridView1.SelectedValue.ToString();
Response.Write(rowid2);


اما پیغام خطای زیر رو می دهد :




Object reference not set to an instance of an object





فکر می کنم باید cast بشه یا کلا روش استفاده از id که من انجام دادم ایراد دارد .

ممنون می شم پاسخ بدید

micro_bhk
دوشنبه 20 تیر 1390, 19:45 عصر
دوست عزیز دستورات رو به اینصورت تغییر بده:

<asp:TemplateField>
<ItemTemplate>
<asp:Button ID="btnName" runat="server" OnCommand="btnName_Command" CommandArgument='<%# Eval("id") %>' Text="نام" />
</ItemTemplate>
</asp:TemplateField>




protected void btnName_Command(object sender, CommandEventArgs e)
{
int id = int.Parse(e.CommandArgument.ToString());
Response.Write(id.ToString());
}