2011-06-13 50 views
1

我将尝试使用下面的代码做文本框自动完成,但它给出了错误文本框自动完成与MySQL

ERROR :"Object reference not set to an instance of an object" 

在这条线:

for (int count = 0; count < dt.Rows.Count; count++) 

谁能帮我?

private void tbMemberName_TextChanged_1(object sender, EventArgs e) 
{ 
    tbMemberName.AutoCompleteMode = AutoCompleteMode.Suggest; 
    tbMemberName.AutoCompleteSource = AutoCompleteSource.CustomSource; 
    AutoCompleteStringCollection namec = new AutoCompleteStringCollection(); 

    //string search ="%"+ tbMemberName.Text +"%"; 
    //string @Name = tbMemberName.Text; 
    String sql = 
     @"SELECT DISTINCT(member_Firstname +''+ member_Lastname) AS Name FROM members WHERE Name Like '%'+tbMemberName.Text+'%'"; 
    DataTable dt = MemberFormHelper.GetData(sql, mf); 
    if (dt.Rows.Count >= 0) 
    { 
     for (int count = 0; count < dt.Rows.Count; count++) 
     { 
      namec.Add(dt.Rows[count][Name].ToString()); 
     } 
    } 
    tbMemberName.AutoCompleteCustomSource = namec; 
} 
+0

会不会有人请帮助我从这种情况 – user682417 2011-06-13 14:52:32

+0

请相应标记您的问题,使用尽可能多的标签,你可以,这将帮助你的问题的答案。 – Trufa 2011-06-13 15:33:30

回答

0

如果NRE是此行

for (int count = 0; count < dt.Rows.Count; count++)那么这只能意味着dt为空。

因此MemberFormHelper.GetData(sql, mf);正在返回空值。在循环之前修复GetData()或检查dt为null。

+0

String sql = @“SELECT(member_Firstname +''+ member_Lastname)AS Name FROM members WHERE Name Like'”+ tbMemberName.Text +“'”;它不工作,你会确认aboce查询是正确的一个为mysql pls ...它不会给出任何错误 – user682417 2011-06-13 15:36:21

+0

@ user1你可以发布整个'MemberFormHelper.GetData()'方法吗? – 2011-06-13 15:37:58

+0

public static DataTable GetData(string sql,formMain mf) {r = WebCalls.webClass.doPost(mf.gBaseUrl +“xxxx/xxxx/query.php”,sql); DataSet ds = new DataSet(); System.IO.TextReader t = new System.IO.StringReader(r); 尝试 ds.ReadXml(t); } catch { Console.WriteLine(r); (ds.Tables.Count> 0) } if(ds.Tables.Count> 0) { DataTable dt = ds.Tables [0]; return dt; } else { } return null; } – user682417 2011-06-13 15:41:17

0

尝试

for (int count = 0; count < dt.Rows.Count-1; count++) 

如果行数是10,你需要循环从0到9(10-1)。

干杯