如何在文本框中显示当前登录用户的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"的新表中

有人能帮我吗?

如何在文本框中显示当前登录用户的id

由于其他人已经发布了针对您的问题的潜在解决方案,因此我将继续解释正确的解决方案:

删除你所有的代码,重新开始。

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}" />