如何在文本框中显示当前登录用户的id
本文关键字:登录 用户 id 显示 文本 | 更新日期: 2023-09-27 17:54:20
我试图在c# wpf应用程序中从datagrid的第一行获取数据,但我无法找出代码。
有人能帮我吗?
我尝试了WF应用程序代码,但它不工作,因为没有功能。rows
return Convert.ToInt32(dataGridView1.Rows[dataGridView1.CurrentRow.Index]
.Cells[0].Value.ToString());
感谢更新:
我试图得到当前的登录用户id显示在文本框中,所以我可以用它来预订以后,并加入两个表。
谁能帮我写一条SQL语句,将两个不同的id(用户id和用户购买的书id)连接到一个名为"reservations"的新表中
有人能帮我吗?
由于其他人已经发布了针对您的问题的潜在解决方案,因此我将继续解释正确的解决方案:
删除你所有的代码,重新开始。
WPF不是winforms,如果你正在使用WPF,你需要抛弃你从传统方法中获得的任何和所有概念,并理解和接受 WPF心态。
基本上,你不会在WPF中"从DataGrid中获取数据",仅仅是因为UI不是数据。
这意味着您试图获取的数据一开始就不能由UI存储。相反,您需要创建一个合适的数据模型,并使用DataBinding用来自数据模型的数据填充UI。
UI的职责是显示数据,而不是存储数据。这是一个重要的思想转变,从传统的方法,您将手动填充数据的UI,然后从UI检索数据。WPF的双向数据绑定功能使得以一种干净、解耦的方式实现这些场景变得更加容易。
假设你有一个User类,它有一个Name
和一个Id
属性:
public class User
{
public int Id {get;set;}
public string Name {get;set;}
}
在DataGrid中显示这一点的第一步是创建一个合适的ViewModel,它包含这个类的集合:
public class ViewModel
{
public ObservableCollection<User> Users {get; private set;}
public ViewModel()
{
Users = new ObservableCollection<User>();
//... Populate the collection here.
}
}
那么你将使用这个类作为UI的DataContext:
//Window's constructor
public MainWindow()
{
InitializeComponent();
//Here we set the DataContext:
DataContext = new ViewModel();
}
最后,在XAML中创建适当的数据绑定:
<DataGrid ItemsSource="{Binding Users}"
x:Name="DataGrid"/>
<!-- ... -->
<TextBox Text="{Binding SelectedItem.Id, ElementName=DataGrid}"/>
请注意我是如何使用ElementName绑定将TextBox直接绑定到DataGrid的。
这是首选的、专业的WPF方法。我建议您阅读所有链接的文档,并尝试更熟悉这种方法。
例如,如果要用List<SomeObject>
填充DataGrid
,请尝试以下操作:
var row = ((SomeObject)DataGrid1.Items[0]);
只需将项目强制转换回您的类类型,然后访问其属性。你可能想要做一个检查,以确保在访问Items[0]
之前有一些东西显示在网格中。
您可以对网格中的不同列进行排序,这将始终抓取显示在顶部的记录。
编辑,在看到以下注释后:
当我点击DATAGRID中的第一行时,这个函数应该/必须在数据网格下面的文本框中显示用户的ID。
您可以直接绑定到您的网格,以显示您想要的属性,从当前选定的行
<DataGrid x:Name="DataGrid1" />
<TextBox Text="{Binding ElementName=DataGrid1, Path=SelectedItem.UserId}" />