PDA

View Full Version : نمایش دو فیلدجدول در dropdownlist



zahracomputer
پنج شنبه 20 خرداد 1389, 12:23 عصر
سلام و خسته نباشید
من در جدولم تعدادی رکورد دارم که می خواستم دو فیلد هر رکود که نام و نام خانوادگی فرد میباشد به عنوان یک ایتم dropdownlist قرار بگیرد. آیا امکان دارد؟ اگر امکانش هست چطوری؟
جسنجو کردم ولی جواب نگرفتم
با تشکر

rana-writes
پنج شنبه 20 خرداد 1389, 13:22 عصر
سلام
توی دستوری سلکتی که می نویسین، فیلد نام و نام خانوادگی رو اینطوری کنار هم بنویسین


Select FirstName+' ' +LastName
From Personal


موفق باشین

hamedsabzian
پنج شنبه 20 خرداد 1389, 13:37 عصر
بهتره توی دستور Select دوتا فیلد رو در کنار هم قرار بدی.

zahracomputer
پنج شنبه 20 خرداد 1389, 14:12 عصر
ممنون از توجهتون من کد زیر را نوشتم


strSel="select name,famil from tblPersonel where Expert='"+ddlExpert.SelectedItem.Text+"'";
cmd.Connection = sqlcon.SqlConnection();
cmd.CommandText = strSel;
dr = cmd.ExecuteReader();
ddlPersonel.DataSource = dr;
ddlPersonel.DataTextField = "Famil";
ddlPersonel.DataBind();
dr.Close();

ولی در قسمت DataTextField فقط نام یک فیلد را می تونم بنویسم

hamedsabzian
پنج شنبه 20 خرداد 1389, 14:15 عصر
strSel="select name+' '+famil as 'FullName' from tblPersonel where Expert='"+ddlExpert.SelectedItem.Text+"'";
cmd.Connection = sqlcon.SqlConnection();
cmd.CommandText = strSel;
dr = cmd.ExecuteReader();
ddlPersonel.DataSource = dr;
ddlPersonel.DataTextField = "FullName";
ddlPersonel.DataBind();
dr.Close();

Nightbat
پنج شنبه 20 خرداد 1389, 15:10 عصر
اینطوری راحت Inject می شی، از پارامتر استفاده کن.
هرچند که dropDown ه و جایی برای ورود اطلاعات نداره، اما روشت درست نیست.

zahracomputer
پنج شنبه 20 خرداد 1389, 16:50 عصر
مرسی از توجهتون
من تا حالا از پارامتر استفاده نکردمیشه بیشتر توضیح بدین

hamedsabzian
پنج شنبه 20 خرداد 1389, 17:15 عصر
strSel="select name+' '+famil as 'FullName' from tblPersonel where Expert=@Expert";
cmd.Connection = sqlcon.SqlConnection();
cmd.CommandText = strSel;
cmd.Parameters.AddWithValue("@Expert",ddlExpert.SelectedItem.Text);
dr = cmd.ExecuteReader();
ddlPersonel.DataSource = dr;
ddlPersonel.DataTextField = "FullName";
ddlPersonel.DataBind();
dr.Close();
اگه واضح نبود بگید توضیح بدم.

zahracomputer
پنج شنبه 20 خرداد 1389, 21:04 عصر
مرسی در حالت جدید فقط کد زیر اضافه شده است:

cmd.Parameters.AddWithValue("@Expert",ddlExpert.Se lectedItem.Text);
این کد چه کاری می کند؟
زمانیکه می این کد را اضافه می کنم برنامه خطای زیر را می دهد

Object reference not set to an instance of an object.

مرسی

hamedsabzian
پنج شنبه 20 خرداد 1389, 21:23 عصر
strSel="select name+' '+famil as 'FullName' from tblPersonel where Expert=@Expert";
cmd.Connection = sqlcon.SqlConnection();
cmd.CommandText = strSel;
cmd.Parameters.AddWithValue("@Expert",ddlExpert.Se lectedItem.Text);
dr = cmd.ExecuteReader();
ddlPersonel.DataSource = dr;
ddlPersonel.DataTextField = "FullName";
ddlPersonel.DataBind();
dr.Close();
Expert@ یک پارامتر است (یه چیزی شبیه به یک متغیر) که باید مقدارش رو از بیرون بدید. خط 4. (خط 4 هم تغییر کرده است). همیشه برای قراردادن داده هایی که از کاربر گرفته میشوند در کنار کد SQL به این روش، پارامتری عمل کنید.
وقتی با پارامتر های کار می کنید، هر مقداری که به آنها پاس دهید به هیچ وجه در ترکیب با دستور SQL منجر به SQL Injection (تزریق کد SQL به جای داده ی ورودی، منجر به تغییر Query میشود) نمی شود (مگر ...).

SQL Injection رو توی گوگل جستوجو کن!

aminghaderi
جمعه 21 خرداد 1389, 02:08 صبح
(مگر ...).
مگر چی ؟؟؟
ممنون می شم توضیح بدید؟؟

hamedsabzian
جمعه 21 خرداد 1389, 02:27 صبح
مگه اینکه داخل کد SQL از تابع EXEC برای اجرای یک رشته (به صورتی که پارامتر های ورودی در رشته ی به کار رفته باشن) به عنوان کد استفاده کرد.

zahracomputer
جمعه 21 خرداد 1389, 17:52 عصر
دوست عزیز ممنون از راهنماییتون ولی چرا وقتی من کد را به این شکل تغییر می دم خطای زیر را می دهد

Object reference not set to an instance of an object.
مرسی از توجهتون

hamedsabzian
جمعه 21 خرداد 1389, 17:56 عصر
کدی رو که استفاده می کنید، کامل بزارید ببینیم!

zahracomputer
یک شنبه 23 خرداد 1389, 23:12 عصر
ممنون از کمکتون من کد را به این شکل نوشته ام


protected void ddlExpert_SelectedIndexChanged(object sender, EventArgs e)
{
if (ddlExpert.SelectedIndex == 1)
{
Label1.Visible = true;
ddlType.Visible = true;
strSel="select name,famil from tblPersonel where Expert='"+ddlExpert.SelectedItem.Text+"'";
cmd.Connection = sqlcon.SqlConnection();
cmd.CommandText = strSel;
cmd.Parameters.AddWithValue("@Expert", ddlPersonel.SelectedItem.Text);
dr = cmd.ExecuteReader();
ddlPersonel.DataSource = dr;
ddlPersonel.DataTextField = "Famil";
ddlPersonel.DataBind();
dr.Close();
sqlcon.SqlConnection().Close();
}
}

با تشکر

hamedsabzian
یک شنبه 23 خرداد 1389, 23:34 عصر
strSel="select name,famil from tblPersonel where Expert='"+ddlExpert.SelectedItem.Text+"'";
جایگزین شود با:
strSel="select name+' '+famil as 'FullName' from tblPersonel where Expert=@Expert";

جوابتون توی پستای قبل بود.