2015-01-15 42 views
0

我正在以水平方式生成一個gridview。代碼工作正常,但名稱爲column1和column2的虛擬行插入。我怎樣才能防止這種插入?我的GridView的代碼是如何避免在gridview中插入虛擬行?

str = "select MachID,EmpCode from EmpDetails where EmpCode='" + empcode + "'"; 
DataTable dt = GetData(str); 
DataTable dt2 = new DataTable(); 
for (int i = 0; i <= dt.Rows.Count; i++) 
{ 
    dt.Columns.Add(); 
} 
for (int i = 0; i < dt.Columns.Count; i++) 
{ 
    dt2.Rows.Add(); 
    dt2.Rows[i][0] = dt.Columns[i].ColumnName; 
} 
for (int i = 0; i < dt.Columns.Count; i++) 
{ 
    for (int j = 0; j < dt.Rows.Count; j++) 
    { 
     dt2.Rows[i][j + 1] = dt.Rows[j][i]; 

    } 
} 
gvOrders.DataSource = dt2; 
gvOrders.DataBind(); 

我現在的O/P是

Column1 Column2 
MachID  101 
EmpCode ABC 

我想避免這種情況列1列2和行。我怎樣才能做到這一點??

我的GetData功能

private static DataTable GetData(string query) 
{ 
    DataTable dt = new DataTable(); 
    SqlCommand cmd = new SqlCommand(query); 
    String constr =  ConfigurationManager.ConnectionStrings["ApplicationServices"].ConnectionString; 
    SqlConnection con = new SqlConnection(constr); 
    SqlDataAdapter sda = new SqlDataAdapter(); 
    cmd.CommandType = CommandType.Text; 
    cmd.Connection = con; 
    sda.SelectCommand = cmd; 
    sda.Fill(dt); 
    return dt; 
} 
+1

之間添加幾行代碼在一個側面說明你的SQL是容易受到SQL注入閱讀,以避免SQL注入容易的查詢http://stackoverflow.com/questions/6547986/how-to-prevent-a-sql-injection-escaping-strings –

+0

@代碼,雅,它只是一個測試模型thatsy我避免了參數化查詢。 –

+0

你可以發佈你的aspx代碼 –

回答

1

在您的代碼隱藏嘗試行標題可見性設置爲false,如下所示:

gvOrders.RowHeadersVisible = false; 

否則在你的aspx文件,你可以添加ShowHeader="False"到你的asp:GridView標籤。

+0

我找不到「RowHeadersVisible」 –

+0

http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridtablestyle.rowheadersvisible%28v=vs.110%29.aspx – Thomas

+0

事情'Column1'和當您的for循環第一次迭代時會打印'Column2',因此只要在各個for循環的第一次執行完成時向條件中添加任何內容即可。 - Laymen解決方案(易於理解和實施) – Parth

0

代碼在數據表中刪除重複的行DT

for (int i = 0; i < dt.Rows.Count-1; i++) 
     { 
      for (int j = i+1; j < dt.Rows.Count; j++) 
      { 
       if (dt.Rows[i].ItemArray.SequenceEqual(dt.Rows[j].ItemArray)) 
        dt.Rows[j].Delete(); 
      } 
     } 

在二,三線