2016-03-21 85 views
0
protected void Button_Upload_Click(object sender, EventArgs e) 
{ 
    if (FileUpload1.HasFile) 
    { 
     FileUpload1.PostedFile.SaveAs(Server.MapPath("~/Data/" + FileUpload1.FileName)); 
    } 
    string path = Server.MapPath("~/Data/" + FileUpload1.FileName); 
    string[] readtext = File.ReadAllLines(path); 


    StringBuilder strbuild = new StringBuilder(); 

    foreach (string s in readtext) 
    { 
     strbuild.Append(s); 
     strbuild.AppendLine(); 

    } 
    ListBox1.DataValueField = strbuild.ToString(); 
    ListBox1.DataTextField = strbuild.ToString(); 
    ListBox1.DataSource = strbuild.ToString(); 
    ListBox1.DataBind(); 

ここでは、顧客の詳細を含むファイルをアップロードしています。ファイルを選択すると、次のようなエラーが表示されますDataBinding: 'System.Char'には名前のプロパティが含まれていませんお客様

DataBinding: 'System.Char'にはXXXという名前のプロパティが含まれていません。

変更する必要がありますか?

答えて

0

私はStringBuilderのは、このシナリオでは効率的ではないと思います。最適な選択肢は、nameidのプロパティを持つ顧客用のクラスを作成し、入力データからリストを作成し、それをリストにバインドすることです。ここでファイル形式は不明で、ファイルに関する詳細は表示されません。そこでここではリストからリストボックスをバインドする方法の一例を示します。

 List<string> strList = File.ReadAllLines(@"C:\Users\Sujith\Desktop\sujith\Allcredentials.txt").ToList(); 
     ListBox1.DataSource = strList; 
     ListBox1.DataBind(); 
+0

ありがとうございました。しかし、 "string path = Server.MapPath("〜/ Data/"+ FileUpload1.FileName); string [] readtext = File.ReadAllLines(path);"この行は完全な行を選択していますが、一度に1つの値を選択する必要があります。どのように可能な..? – kiran

+0

このリンクは、あなたがそれを行うのに役立ちます:https://msdn.microsoft.com/en-us/library/aa287535(v=vs.71).aspx –

0

このようにデータバインディングは機能しません。その後、リストを作成

List<string> strList = new List<string>(); 

foreach (string s in readtext) 
{ 
    strbuild.Add(s); 
} 
ListBox1.DataSource = strList; 
ListBox1.DataBind(); 

それのすべての行を格納するために持っているか、あなたは単にあなたが

ListBox1.DataSource = readText; 
+0

あなたの種類helppをありがとうGilang ....その作業fine..Thanks ... "文字列のパス= Server.MapPathの(" 〜/データ/」+ FileUpload1.FileName); 文字列[] READTEXT = File.ReadAllLines(path); "この行はファイル内の行を選択しています。しかしここで私は1つの行で1つの値だけを選択する必要があります。どのように可能な.. ?? – kiran

0

Gilangの答えは動作するはず読んだものから文字列配列を置くことができますが、特別な存在でありますバインディングで使用するように設計されたクラス - BindingList。あなたのコードは次のようになります。

var bindingList = new BindingList<string>(readText); 
ListBox1.DataSource = bindingList; 
ListBox1.DataBind(); 

このように、リストボックスの項目リスト内のすべての変更は(追加または削除)が正しくデータソースに巻き込まれて - あなたが実際にtwo way bindingを持っています。

注:それ以外のコードは、それが成長したときに読み取ることが非常に困難になるだろう、あなたの変数の意味のある名前を使用するようにしてください:

`ListBox1` -> `lstCustomers` or `CustomersList` 
`readText` -> `readLines` or `customerNames` 
関連する問題