繁体   English   中英

如何将当前用户的id登录到文本框

[英]How to current logged in user's id to textbox

我试图从c#wpf app中的datagrid的第一行获取数据,但我无法弄清楚代码。

有人能帮助我吗?

我尝试了WF应用程序代码,但它不起作用,因为它没有.Rows的功能

return Convert.ToInt32(dataGridView1.Rows[dataGridView1.CurrentRow.Index]
          .Cells[0].Value.ToString());

谢谢

更新:

我试图获取当前登录的用户ID以显示在文本框中,因此我可以使用它来稍后进行预订并加入两个表。

也有人可以帮助编写加入两个不同id的SQL语句(用户购买的书的用户ID和id到一个名为“预订”的新表中)

有人能帮助我吗?

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

删除所有代码并从头开始。

WPF不是winforms,如果你正在使用WPF,你需要留下你从传统方法中获得的任何和所有概念,并理解并接受WPF心态

基本上,您不会在WPF中“从DataGrid获取数据”,因为UI不是数据

这意味着您尝试获取的数据不能由UI 存储开始。 相反,您需要创建一个正确的数据模型,并使用DataBinding使用DataModel中的此类数据填充UI。

UI的职责是显示数据,而不是存储数据。 这是传统方法的重要转移,您可以使用数据手动填充UI,然后从UI检索数据。

WPF双向数据绑定功能使得以干净,分离的方式实现此类方案变得更加容易。

假设您有一个具有NameId属性的User类:

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中创建正确的DataBinding:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM