2013-04-06 98 views
2

我在asp.net中使用GridView。我想選擇一個數據行。我在屬性面板中查找了MultiSelect和SelectionMode,但找不到它。Asp.net GridView啓用行選擇

那麼如何啓用在GridView中選擇行?

謝謝。

enter image description here 代碼後面

public partial class SearchCourse : System.Web.UI.Page 
{ 
Connection dbCon; 
DataTable tbl; 

protected void Page_Load(object sender, EventArgs e) 
{ 
    dbCon = new Connection(); 


} 
protected void RadioButton1_CheckedChanged(object sender, EventArgs e) 
{ 
    if (RadioButton1.Checked) { 
     txtSubName.Enabled = true; 
     comboSemester.Enabled = false; 
     comboYear.Enabled = false; 
     comboProgram.Enabled =false; 
     txtSubName.Text = ""; 
    } 
} 
protected void RadioButton2_CheckedChanged(object sender, EventArgs e) 
{ 
    if (RadioButton2.Checked) { 

     comboProgram.Enabled = true; 

     if (comboProgram.SelectedItem.ToString() == "Foundation Course") 
     { 
      comboSemester.Enabled = false; 
      comboYear.Enabled = false; 
     } 
     else { 
      comboSemester.Enabled = true; 
      comboYear.Enabled = true; 
     } 
     txtSubName.Text = ""; 
     txtSubName.Enabled = false; 
    } 
} 

protected void imgBtnSearch_Click(object sender, ImageClickEventArgs e) 
{ 
    if (RadioButton1.Checked) { 
     String name = txtSubName.Text; 
     tbl = dbCon.getResultsBySubjectName(name); 
     GridView1.DataSource = tbl; 
     GridView1.DataBind(); 
    } 
    else if (RadioButton2.Checked) 
    { 
     String program = comboProgram.SelectedItem.ToString(); 
     String year = comboYear.SelectedItem.ToString(); 
     String sem= comboSemester.SelectedItem.ToString(); 
     tbl = dbCon.getResultsByProgram(program,year,sem); 
     GridView1.DataSource = tbl; 
     GridView1.DataBind(); 
    } 
    else if (RadioButton3.Checked) 
     { 
      String name = txtSubName.Text; 
      tbl = dbCon.getResultsBySubjectNo(name); 
      GridView1.DataSource = tbl; 
      GridView1.DataBind(); 
     } 

} 

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    String program = comboProgram.SelectedItem.ToString(); 
    String year, sem; 
    if (program == "Foundation Course") 
    { 
     comboYear.Enabled = false; 
     comboSemester.Enabled = false; 
     year = null; 
     sem = null; 
    } 
    else { 
     comboYear.Enabled = true; 
     comboSemester.Enabled = true; 
     year = comboYear.SelectedItem.ToString(); 
     sem = comboSemester.SelectedItem.ToString(); 
    } 

    tbl = dbCon.getResultsByProgram(program, year, sem); 
    GridView1.DataSource = tbl; 
    GridView1.DataBind(); 
} 

protected void comboYear_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    String program = comboProgram.SelectedItem.ToString(); 
    String year = comboYear.SelectedItem.ToString(); 
    String sem = comboSemester.SelectedItem.ToString(); 
    tbl = dbCon.getResultsByProgram(program, year, sem); 
    GridView1.DataSource = tbl; 
    GridView1.DataBind(); 
} 
protected void comboSemester_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    String program = comboProgram.SelectedItem.ToString(); 
    String year = comboYear.SelectedItem.ToString(); 
    String sem = comboSemester.SelectedItem.ToString(); 
    tbl = dbCon.getResultsByProgram(program, year, sem); 
    GridView1.DataSource = tbl; 
    GridView1.DataBind(); 

} 



protected void RadioButton3_CheckedChanged(object sender, EventArgs e) 
{ 
    if (RadioButton3.Checked) 
    { 
     txtSubName.Enabled = true; 
     comboSemester.Enabled = false; 
     comboYear.Enabled = false; 
     comboProgram.Enabled = false; 
     txtSubName.Text = ""; 
    } 
} 
protected void GridView1_SelectedIndexChanged(object sender, EventArgs e) 
{ 

} 

}

GridView的代碼

<asp:GridView ID="GridView1" CssClass="grid" runat="server" AllowPaging="True" 
BorderColor="Black" BorderStyle="Solid" BorderWidth="2px" 
GridLines="Horizontal" EnableViewState="False" 
PageSize="5" onselectedindexchanged="GridView1_SelectedIndexChanged" > 

<RowStyle CssClass="gridRow" Width="800px" /> 

<SelectedRowStyle BackColor="#FF0066" ForeColor="White" /> 

</asp:GridView> 
+0

請在aspx頁面上發佈gridview代碼。 – 2013-04-06 04:35:54

+0

在'GridView1_SelectedIndexChanged'上使用斷點來檢查事件是否正在啓動。 – 2013-04-06 04:42:49

+0

爲什麼它沒有MultiSelect和SingleSelection屬性? – chathura 2013-04-06 04:45:31

回答

-1

在GridView中,你必須定義一個事件onselectedindexchangedonrowdatabound如下:

onselectedindexchanged="GridView1_SelectedIndexChanged" onrowdatabound="GridView1_RowDataBound" 

顯示所選行,你可以在你的網格視圖中使用以下樣式:

<SelectedRowStyle BackColor="Red" /> 

代碼背後:

protected void GridView1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
} 

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 

if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     // Set the hand mouse cursor for the selected row. 
     e.Row.Attributes.Add("OnMouseOver", "this.style.cursor = 'hand';"); 

     // The seelctButton exists for ensuring the selection functionality 
     // and bind it with the appropriate event hanlder. 
     LinkButton selectButton = new LinkButton() 
     { 
      CommandName = "Select", 
      Text = e.Row.Cells[0].Text 
     }; 
     selectButton.Font.Underline = false; 
     selectButton.ForeColor = Color.Black; 

     e.Row.Cells[0].Controls.Add(selectButton); 
     //e.Row.Attributes["OnClick"] = 
     //  Page.ClientScript.GetPostBackClientHyperlink(selectButton, ""); 
     e.Row.Attributes["onclick"] =   ClientScript.GetPostBackClientHyperlink(this.GridView1, "Select$" + e.Row.RowIndex); 
    } 
    } 

備註:您可以在事件窗口中找到事件。

+0

讓我知道,如果它可以幫助你。 – 2013-04-06 04:16:17

+0

我沒有在GridView1_SelectedIndexChanged中編寫任何代碼。它仍然不起作用。有任何想法嗎?? – chathura 2013-04-06 04:18:27

+0

請發佈您的代碼。 gridview和後面的代碼。 – 2013-04-06 04:23:00

0

我認爲MultiSelect和SelectionMode屬性只適用於VB.NET網格,不適用於ASP.NET。請記住,ASP.NET中的所有控件都是HTML僞裝的,因此它們可能會更有限。你沒有理由不能有多選表,但你必須自己做管道。所以,你需要啓用行選擇,要麼通過處理RowDataBound事件在

http://forums.asp.net/t/992062.aspx?How+to+select+row+in+gridview+on+click

或其他使用MS提供的選項,如

http://msdn.microsoft.com/en-us/library/wbk82279(v=vs.100).aspx

然後,你需要處理SelectedIndexChanging事件,找出用戶點擊了哪一行,並處理自己的行着色。