gpt4 book ai didi

c# - 使用数据表中的文本填充文本框 - 组合框

转载 作者:行者123 更新时间:2023-11-29 02:16:07 24 4
gpt4 key购买 nike

我有一个数据表(两个数据表,但我们现在只是想象有一个)在我的窗口加载时已经声明,这个数据表填充有:

  • 笔记ID
  • 笔记名称
  • 备注

NoteID:我的 SQL 数据库中给出注释和 ID 的第一列

NoteName: 我的 SQL 数据库中的第二列为笔记命名

注意:这是给出注释文本的第三列也是最后一列(如果是 VarChar(MAX) 可能会很长)

目前我的 DataTable 填充没有问题,但是我想用与在组合框中选择的“NoteName”关联的“Note”列填充我的 TextBox(命名:textResult)。

//Setup connection to server
SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();
builder.DataSource = "123.123.123.123";
builder.InitialCatalog = "DiscoverThePlanet";
builder.UserID = "TestPerm";
builder.Password = "Test321";

string connectionString = builder.ConnectionString;

DataTable dtNotes = new DataTable();
DataTable dtTemplateNotes = new DataTable();


using (SqlConnection conn = new SqlConnection(connectionString))
{
conn.Open();

SqlCommand cmdNotes = new SqlCommand("SELECT NoteID, NoteName, Note FROM Notes", conn);
SqlCommand cmdTemplateNotes = new SqlCommand("SELECT TemplateNoteID, TemplateNoteName, TemplateNote FROM TemplateNotes", conn);

SqlDataReader readerNotes = cmdNotes.ExecuteReader();

dtNotes.Columns.Add("NoteID", typeof(string));
dtNotes.Columns.Add("NoteName", typeof(string));
dtNotes.Columns.Add("Note", typeof(string));
dtNotes.Load(readerNotes);

SqlDataReader readerTemplateNotes = cmdTemplateNotes.ExecuteReader();

dtTemplateNotes.Columns.Add("TemplateNoteID", typeof(string));
dtTemplateNotes.Columns.Add("TemplateNoteName", typeof(string));
dtTemplateNotes.Columns.Add("TemplateNote", typeof(string));
dtTemplateNotes.Load(readerTemplateNotes);

// Temporary loop to see if the DataTable (dt) has any data?!?
//foreach (DataRow thisRow in dt.Rows)
//{
// MessageBox.Show(thisRow["NoteName"].ToString());
//}

// Define the columns BEFORE setting the item source
noteNamesList.SelectedValuePath = "NoteID";
noteNamesList.DisplayMemberPath = "NoteName";

templateNoteNamesList.SelectedValuePath = "TemplateNoteID";
templateNoteNamesList.DisplayMemberPath = "TemplateNoteName";

// Set the ItemSource to my fully loaded data table!
noteNamesList.ItemsSource = dtNotes.DefaultView;
templateNoteNamesList.ItemsSource = dtTemplateNotes.DefaultView;

//DEBUG START
//MessageBox.Show("Hello");
//DEBUG END

conn.Close();
}

据说我必须使用不同的下拉菜单,但我们现在只使用名为“dtNotes”的下拉菜单

我对此很陌生,如果我尝试在我的代码中的任何地方引用“dtNotes”,它找不到它吗?

我的 textResult XAML(如果需要):

<TextBox x:Name="textResult" HorizontalAlignment="Left" Height="760" Margin="42,141,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="1494" AcceptsReturn="True" TextChanged="textResult_TextChanged" BorderBrush="#FF00A9CF" FontFamily="DengXian" FontSize="14.667" Background="#FFF3FFFE" Grid.ColumnSpan="2"/>

组合框,如果你需要的话:

 <ComboBox x:Name="noteNamesList" HorizontalAlignment="Left" Height="28" Margin="42,101,0,0" VerticalAlignment="Top" Width="240" BorderBrush="White" Opacity="0.985" FontFamily="DengXian" FontSize="13.333"></ComboBox>

希望我已经为您提供了足够的信息,非常感谢您的帮助。

PS 这是在 WPF 上

最佳答案

看起来您可能将数据表声明为该方法的局部变量。

DataTable 声明放在 Namespace 声明和类构造函数之间的空间中

Namespace MyProject
{
public sealed partial class MyClass : Page
{
//Class wide variables go here

DataTable mytable = new DataTable();

class MyClass()
{

}
}
}

之后,您应该能够在 ComboBox.SelectionChanged 事件中引用您的 DataTable 以将您的值分配给 TextBox

编辑:

ComboBox.SelectionChanged 事件中使用

TextBox.Text = ComboBox.SelectedValue.ToString();

其中 TextBox 是要分配给的 TextBox 的名称,ComboBox 是您要从中获取值的 ComboBox 的名称。

或者,如果像您的情况一样,它是组合框无法直接处理的第三个值

TextBox.Text = DataTable.Rows[ComboBox.SelectedIndex]["Note"].ToString()

关于c# - 使用数据表中的文本填充文本框 - 组合框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39390133/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com