PDA

View Full Version : تیک دار شدن chekbox که یکی از فیلدهای datagrid است با فشردن کلید space



fateme65
دوشنبه 13 آبان 1392, 10:06 صبح
سلام
من می خوام وقتی روی هر کدوم از سطرای datagrid میرم با زدن کلید space فیلد انتخابی که واسش گذاشتم بصورت checkbox تیک بخوره یا اگه تیک داره برداشته شه. هرکار می کنم اول باید خود اون فیلدو انتخاب کنم بعد با space تیکدار میشه.
واقعا کلافه شدم! چند روزه سر این موضوع گیر کردم! کسی می دونه باید چه کنیم؟
اگه راهنمایی کنید ممنون میششششششششششششم

fateme65
دوشنبه 13 آبان 1392, 12:24 عصر
یعنی هیچکس نمی دونه؟؟؟؟؟؟

Boy_nn
دوشنبه 13 آبان 1392, 12:28 عصر
با اونت Keydown
هرقت که کی دانت برابر باspace بود مقدار دیتا سورس رو تغییر بده

fateme65
دوشنبه 13 آبان 1392, 12:48 عصر
مقدار data source ?
ببینید من چند فیلد دارم که از دیتا بیس میارمشون
و یک فیلد که برای انتخاب row گذاشتمش و checkbox هستش
می خوام با زدن کلید space فیلد checkbox ی که توی اون سطره انتخاب شه و checked و unchecked بشه.
اما نمی تونم از طریق keydown مقدارشو تغییر بدم!
چطوری این کارو بکنم با datasource مگه مقدار غیر دیتابیسی رو هم میشه تغییر داد؟؟؟

Boy_nn
دوشنبه 13 آبان 1392, 13:06 عصر
مقدار دیتابیس رو بریز توی متغیر( و همین طور دیتاگرید) بعد هر وقت اونت Keydown اجرا شد مقدار ستون مورد نظر رو عوض کن و دیتا گریدت رو رفرش کن

fateme65
دوشنبه 13 آبان 1392, 13:10 عصر
خب همین چگونگی تغییر مقدار متغیری که از دیتابیس نیست رو بلد نیستم. هرچی هم سرچ می کنم پیدا نمی کنم!

fateme65
دوشنبه 13 آبان 1392, 13:28 عصر
منظورم اینه که می تونم مقدار اون فیلدو بریزم توی یه متغیر ولی نمی دونم چطور وقتی مقدارشو عوض کردم دوباره بریزمش توی همون فیلد.

Boy_nn
دوشنبه 13 آبان 1392, 14:11 عصر
با Linq کار کردی

fateme65
سه شنبه 14 آبان 1392, 07:44 صبح
توی پروژم با framework کار کردم اما در کل linq کار کردم قبلا. چطور؟ با لینک میشه؟ اگه آره چطوری؟

Boy_nn
سه شنبه 14 آبان 1392, 09:28 صبح
فکر کنم منظور شما linq to sql هست
ولی منظور من linq هست
اگه با linq و listکار کرده باشید می تونید مشکلتونو حل کنید

fateme65
سه شنبه 14 آبان 1392, 10:43 صبح
نه تا بحال غیر از linq to sql با linq کار نکردم! چطور این کارو بکنم؟

hamidkh
چهارشنبه 15 آبان 1392, 19:14 عصر
سلام


<DataGrid AutoGenerateColumns="True" CanUserAddRows="False"
IsReadOnly="True" CanUserReorderColumns="False" CanUserSortColumns="True"
HorizontalAlignment="Stretch" HorizontalGridLinesBrush="Black"
Margin="15,187,12,30" Name="dataGrid1" VerticalAlignment="Stretch"
PreviewMouseDoubleClick="dataGrid1_PreviewMouseDoubleClick"
KeyDown="dataGrid1_KeyDown" >


<DataGrid.Columns>


<DataGridTemplateColumn Header="">


<DataGridTemplateColumn.CellTemplate>


<DataTemplate>


<CheckBox Checked="checkBox1_Checked"
Unchecked="checkBox1_Unchecked"/>


</DataTemplate>


</DataGridTemplateColumn.CellTemplate>


</DataGridTemplateColumn>


</DataGrid.Columns>


</DataGrid>

این هم رویدادش



private void dataGrid1_KeyDown(object sender, KeyEventArgs e)


{


if (e.Key == Key.Space)


{


int i = dataGrid1.SelectedIndex;


DataGridRow row =
(DataGridRow)dataGrid1.ItemContainerGenerator.Cont ainerFromIndex(i);



//ListIndex.Remove(((System.Data.DataRowView)dataGri d1.Items[i]).Row[1]);


if (row != null)


{


IEnumerable<CheckBox> items =
((ContentPresenter)dataGrid1.Columns[0].GetCellContent(row)).ChildrenOfType<CheckBox>();


if (((CheckBox)items.FirstOrDefault()).IsChecked == true)


((CheckBox)items.FirstOrDefault()).IsChecked = false;


else


((CheckBox)items.FirstOrDefault()).IsChecked = true;


}


}


}



فقط یه تابع ChildrenOfType توی این رویداد که از namespace تلریک استفاده شده باید رفرنسش رو به پروژه تون اضافه کنید.