PDA

View Full Version : طریقه تغییر نام Header در GridView در #C



bardia goharbin
سه شنبه 02 آبان 1385, 14:05 عصر
چگونه میتوانم نام Header ستونهای یک GridView رو توسط کدنویسی #C تغییر دهم.
من یک GridView دارم که ستونهای آن به انتخاب کاربر ایجاد میشود و قصد دارم با توجه به فیلدهای انتخاب شده ، Header را نیز به فارسی نمایش دهم.
دستوری که میتوانم Header هر ستون را بدلخواه تغییرنام دهم با توجه به اینکه فقط از ایندکس آن ستون استفاده شود چیست؟

nazaninam
چهارشنبه 03 آبان 1385, 00:58 صبح
GridView1.Columns[0].HeaderText = "text";

bardia goharbin
جمعه 05 آبان 1385, 11:17 صبح
متاسفانه وقتی از دستور بالا استفاده میکنم با Error ذیل مواجه میشوم.
در صورت امکان دلیل وجود این خطا را به بنده بگویید. لازم به ذکر است که گرید من کاملا درست لود شده است و ستونها در صفحه نمایش داده شده اند.

Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index

مهدی کرامتی
جمعه 05 آبان 1385, 11:43 صبح
احتمالا ستونها گرید شما در زمان اجرا مشخص میشوند و شما میخواهید قبل از آن این دستور را اجرا کنید.

bardia goharbin
جمعه 05 آبان 1385, 11:58 صبح
بله ستونهای من در زمان اجرا و در هنگام Page_Load تشکیل میشود ولی دستور مورد نظر بعد از تشکیل ستونها اجرا میشود یعنی Grid را در صفحه با ستونها و دیتا مشاهده میکنم. حتی دستور فوق را در Click یک Button قرار دادم که بعد از DataBind اجرا میشود ولی باز هم با خطایی که در بالا ذکر شد مواجه میشوم. دلیل اینکه تعداد ستونها برابر با صفر است را نمیدانم و حتی بعد از Load شدن Grid هم اگر دستور GridView1.Columns.Count را اجرا کنید تعداد ستونها صفر است در صورتیکه حداقل ۱۰ ستون در حال نمایش در گرید میباشد. واقعا نمیدانم مشکل از کجاست.

alireza6282
جمعه 05 آبان 1385, 13:13 عصر
منم این مشکل رو دارم ؟

bardia goharbin
جمعه 05 آبان 1385, 13:52 عصر
خودم راه حلی برای مشکلی که خودم داشتم و گویا دوست دیگری نیز این مشکل را داشت پیدا کردم.
متاسفانه با روشهایی که ما استفاده میکردیم این امکان وجود ندارد که در زمان Runtime بتوانیم Header را تغییر دهیم
اونهایی که با مشکل من روبرو شده اند برای تغییر Header در GridView باید از دستورات ذیل استفاده کنند و این کار را قبل از DataBind انجام دهند.


In .aspx make Gridview - AutoGenerateColumns="false"
In .aspx.cs - Page_Load
[code]
BoundField col1 = new BoundField();
col1.HeaderText = "AuthorId";
col1.DataField = "au_id";
BoundField col2 = new BoundField();
col2.HeaderText = "First Name";
col2.DataField = "au_fname";
BoundField col3 = new BoundField();
col3.HeaderText = "City";
col3.DataField = "city";

Gridview1.Columns.Add(col1);
Gridview1.Columns.Add(col2);
Gridview1.Columns.Add(col3);
/code]