PDA

View Full Version : سوال: درج به DataGrid



morteza_carefree
سه شنبه 17 آبان 1390, 19:19 عصر
سلام من دو تا تکست باکس دارم که میخوام با کد نویسی بیام محتویاتشون رو به DataGrid اضافه کنم کسی کمکم میکنه ؟

mmd2009
سه شنبه 17 آبان 1390, 19:57 عصر
با سلام

یک روش سادش استفاده از روش زیر هستش :

من دوتا تکس باکس دارم با یک دکمه و یک دیتاگرید .

کدهای Window به این شکل هستش :


readonly List<User> _users=new List<User>();

private void Button1Click(object sender, RoutedEventArgs e)
{
var user = new User {Name = txtName.Text.Trim(), Family = txtFamily.Text.Trim()};
_users.Add(user);

dataGrid1.ItemsSource = _users.ToList();
}
}

public class User
{
public string Name { get; set; }
public string Family { get; set; }
}


و کدهای XAML هم به این صورت :



<Window x:Class="WpfApplication5.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<DataGrid AutoGenerateColumns="False" Height="213" HorizontalAlignment="Left" Margin="83,54,0,0" Name="dataGrid1" VerticalAlignment="Top" Width="345" >
<DataGrid.Columns>
<DataGridTextColumn Header="Name" Binding="{Binding Name}"/>
<DataGridTextColumn Header="Family" Binding="{Binding Family}"/>
</DataGrid.Columns>
</DataGrid>
<Button Content="Button" Height="23" HorizontalAlignment="Left" Margin="202,12,0,0" Name="button1" VerticalAlignment="Top" Width="75" Click="Button1Click" />
<TextBox Height="23" HorizontalAlignment="Left" Margin="26,13,0,0" Name="txtName" VerticalAlignment="Top" Width="120" />
<TextBox Height="23" HorizontalAlignment="Left" Margin="308,13,0,0" Name="txtFamily" VerticalAlignment="Top" Width="120" />
</Grid>
</Window>


امیدوارم کار باهاشون براتون ساده باشه چون واقعا کار سختی نیست. اگر سوالی داشتید بپرسید

موفق باشید

morteza_carefree
سه شنبه 17 آبان 1390, 22:35 عصر
ممنون از کدتون مفید بود واسم اما یه جاش ایراد داره اونم تو این خط به Tolist خطا میده



dataGrid1.ItemsSource = _users.ToList();



اگه امکانش هم هست راجب کدها توضیح بده چون من WPF رو تازه شروع کردم

mmd2009
سه شنبه 17 آبان 1390, 23:05 عصر
کد ها درست بودن و اروری نداشت من تست کردم. نمونه مثال رو میتونید دانلود بکنید.

واسه یادگیری کدهای xaml تو همین بخش wpf تو قسمت تاپیک های مهم دوستان مطالب مفیدی گفتن که با خوندشون خیلی از چیزا براتون روشن میشه

موفق باشید

morteza_carefree
چهارشنبه 18 آبان 1390, 11:08 صبح
ممنون این یادم رفته بود
using System.Linq;

morteza_carefree
چهارشنبه 18 آبان 1390, 18:57 عصر
مجددا من اشکال دارم چرا خودم اینطوری میکنم ایراد میده اومد کلاس رو عوضکردم فقط اسم فیلد ها رو


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Data;

namespace OS
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
this.InitializeComponent();

// Insert code required on object creation below this point.
}
int proc = 0;
readonly List<User> _users = new List<User>();
private void Button_Click(object sender, RoutedEventArgs e)
{
var user = new User { Process = "P"+proc.ToString(), AT = PAT.Text.Trim(),RT=PRT.Text.Trim() };

_users.Add(user);
dataGrid1.ItemsSource = _users.ToList();
}
public class User
{
public string Process { get; set; }
public string AT { get; set; }
public string RT { get; set; }
}
}
}

mmd2009
چهارشنبه 18 آبان 1390, 19:58 عصر
دوست عزیز یا کدهای XAML رو هم بذارید یا اینکه App رو کاملا بذارید که بهتر بشه برنامه رو ببینیم.

موفق باشید

morteza_carefree
پنج شنبه 19 آبان 1390, 19:12 عصر
اینم کل برنامه
77706

mmd2009
پنج شنبه 19 آبان 1390, 19:37 عصر
کدهای XAML رو به این صورت تغییر بدید برای تعریف Column ها :


<DataGrid.Columns>
<DataGridTextColumn Header="Process" Binding="{Binding Process}" Width="80" />
<DataGridTextColumn Header="AT" Binding="{Binding AT}" Width="50" />
<DataGridTextColumn Header="RT" Binding="{Binding RT}" Width="50" />
</DataGrid.Columns>