【问题标题】:Trying to fill a website (webform) Textbox from a Dataset尝试从数据集中填充网站(网络表单)文本框
【发布时间】:2012-02-02 20:11:52
【问题描述】:

我无法将 DataSet 放入名为 PrefixDescription 的网络表单文本框中。我尝试将行转换为字符串,然后尝试将字符串放入文本框中。但是,文本框中没有任何内容。 DataSet 确实有数据。我尝试了数据绑定和数据绑定,但它们也不起作用。

 private DirectoryEntry testAD = new DirectoryEntry();
 private DataTable DT = new DataTable();

 protected void Button2_Click(object sender, EventArgs e)
 {
 DirectorySearcher search = new DirectorySearcher(testAD);
        SearchResultCollection myResults = search.FindAll();
        search.PropertiesToLoad.Add("name");
        DT.Columns.Add("name");
        DT.Columns.Add();

        foreach (SearchResult SR in myResults)
        {
            DataRow dr = DT.NewRow();
            DirectoryEntry DE = SR.GetDirectoryEntry();
            dr["name"] = DE.Properties["name"].Value;
            DT.Rows.Add(dr);
            DT.AcceptChanges();
            PrefixDescription.Text = Convert.ToString(dr["name"]);
            DE.Close();
        }
}

【问题讨论】:

  • 您确定DE.Properties["name"].Value 计算结果为非空字符串吗?
  • 我加倍检查以确保 DE.Properties["name"].Value 有一个值并且确实有
  • 您可以将该值存储到字符串中,然后将 textbox.Text 设置为该值 - 只是为了避免在从 DataRow 对象设置和获取相同值时可能发生的任何事情。此外,将 textbox.Text 设置为某个硬编码值,以确保您不会遇到与该特定控件无关的问题。
  • 当我第一次看到这个时,最明显的一点是 PrefixDescription.Text = Convert.ToString(dr["name"]);将始终覆盖 PrefixDescription.Text。所以最后一行总是赢。我不知道这是否是您的问题的一部分,但似乎它肯定可以
  • 字符串文本测试 = ""; texttest = Convert.ToString(dr["name"]); PrefixDescription.Text = texttest;嗯,我添加了这个以将值保存在字符串中。它是从生产广告中提取的,所以会有一千左右的用户......

标签: asp.net c#-4.0 webforms


【解决方案1】:

更好的是,使用StringBuilder,类似这样..

    System.Text.StringBuilder builder = new System.Text.StringBuilder();

    foreach (SearchResult SR in myResults)
    {
        DataRow dr = DT.NewRow();
        DirectoryEntry DE = SR.GetDirectoryEntry();
        dr["name"] = DE.Properties["name"].Value;
        DT.Rows.Add(dr);
        DT.AcceptChanges();
        builder.Append(Convert.ToString(dr["name"]));
        PrefixDescription.Text = Convert.ToString(dr["name"]);
        DE.Close();
    }

    PrefixDescription.Text = builder.ToString();

【讨论】:

  • 好吧,这很好用,只是应用程序有时似乎会出错,因为从 AD 中提取所有内容需要很长时间。谢谢,我可以继续改进它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-28
  • 2014-05-31
  • 2011-05-19
  • 2012-02-24
  • 1970-01-01
相关资源
最近更新 更多