PDA

View Full Version : سوال خیلی مهم در بخشی از این دستورات



vinnie-paz
شنبه 18 خرداد 1392, 16:50 عصر
سلام دوستانِ عزیزم میخواستم بدونم نقش DataKeyNames در قسمت FormLoad و همینطور [DataKeys[i در قسمت GridViwe در دستورات زیر چیه لطفا اگه امکانش هست توضیحات کامل بدید ممنونتون میشم.
using System;
using System.Configuration;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Data.SqlClient;

public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string ConnectionString = "Server=localhost\\SqlExpress;Database=Store;Integ rated Security=True";
SqlConnection conn = new SqlConnection(ConnectionString);

string CommandText = "SELECT * FROM Customers";
SqlCommand comm = new SqlCommand(CommandText, conn);

conn.Open();

SqlDataReader r = comm.ExecuteReader();
GridView1.DataSource = r;
GridView1.DataKeyNames = new string[] { "CustomerID" };
GridView1.DataBind();

r.Close();
conn.Close();
}
protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
// Obtain the index of the selected row
int i;
i = GridView1.SelectedIndex;
// Read the CustomerID
string cusID = (string)GridView1.DataKeys[i].Value;

string ConnectionString = "Server=localhost\\SqlExpress;Database=Store;Integ rated Security=True";
SqlConnection conn = new SqlConnection(ConnectionString);
string CommandText = "SELECT * FROM Customers WHERE CustomerID=@cusID";
SqlCommand comm = new SqlCommand(CommandText, conn);
comm.Parameters.Add("@CusID", SqlDbType.NChar, 5).Value = cusID;
conn.Open();

SqlDataReader r = comm.ExecuteReader();
DetailsView1.DataSource = r;
DetailsView1.DataBind();

r.Close();
conn.Close();
}
}

ahmad156
شنبه 18 خرداد 1392, 18:09 عصر
دوست عزیز شما در ویژگی های GridView میتونین مقدار DataKeyNames رو به کلید(های) اصلی DataSource نسبت بدین و در CodeBehind به مقدار اون در سطر انتخاب شده دسترسی داشته باشین

DataKeyNames ="Id"

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.datakeynames.as px

anvar
شنبه 18 خرداد 1392, 18:33 عصر
کلا Datakey یک شناسه اختصاصی برای هر ردیف در کنترل های داده ای مثل گرید ویو, دیتالیست و .... است. مثلا یکی از فیلدهای جدول خودتون (مثل CustomerID) رو ست میکنید البته برای هر ردیف میشه چند تا Datakey بطور همزمان در نظر گرفت که با کاما از هم جدا میشن. در کنترل های ویندوزی خاصیتی به نام تگ tag هست که تقریبا همچنین استفاده ای داره.

void CustomersGridView_SelectedIndexChanged(Object sender, EventArgs e)
{

ایندکس ردیف انتخاب شده در اینجا گرفته میشود
int index = CustomersGridView.SelectedIndex;

کلید اصلی هر ردیف در این قسمت نشان داده میشود
Message.Text = "The primary key value of the selected row is " +
CustomersGridView.DataKeys[index].Value.ToString() + ".";

}

vinnie-paz
شنبه 18 خرداد 1392, 18:39 عصر
دوست عزیز شما در ویژگی های GridView میتونین مقدار DataKeyNames رو به کلید(های) اصلی DataSource نسبت بدین و در CodeBehind به مقدار اون در سطر انتخاب شده دسترسی داشته باشین

DataKeyNames ="Id"

[
URL="http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.datakeynames.as px"]http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.datakeynames.as px[/URL]
داداش مرسی ازت بعد این دستور کارش چیه؟
string cusID = (string)GridView1.DataKeys[i].Value;

ahmad156
شنبه 18 خرداد 1392, 19:25 عصر
مقدار کلید اصلی در سطر i ام