如何在gridview中将列设置为只读

时间:2012-04-09 10:04:24

标签: asp.net gridview

我正在使用gridview编辑来编辑我在gridview中的值,当我按下编辑时,所有列都可以编辑,我希望不允许编辑其中一列。

我有什么方法可以做到这一点吗?

这是我的aspx代码:

<asp:GridView ID="GridView1" runat="server" AutoGenerateDeleteButton="True" 
            onrowdeleting="GridView1_RowDeleting" AutoGenerateEditButton="True" 
            onrowediting="GridView1_RowEditing" 
            onrowcancelingedit="GridView1_RowCancelingEdit" 
            onrowupdating="GridView1_RowUpdating" >
</asp:GridView>

这是我的aspx.cs代码:

public void loadCustomer()
        {
            SqlConnection objConnection = new SqlConnection("Data Source=localhost;Initial Catalog=SampleApplication;Integrated Security=True");
            objConnection.Open();
            SqlCommand objCommand = new SqlCommand();
            objCommand.CommandText = "Select * from Customer";
            objCommand.Connection = objConnection;
            objCommand.ExecuteNonQuery();
            DataSet objds = new DataSet();
            SqlDataAdapter objadap = new SqlDataAdapter(objCommand);
            objadap.Fill(objds);
            GridView1.DataSource = objds.Tables[0];
            GridView1.DataBind();
            objConnection.Close();
        }

4 个答案:

答案 0 :(得分:2)

gridView1的RowDataBound事件

((BoundField)gridView1.Columns [columnIndex])。ReadOnly = true;

答案 1 :(得分:2)

我知道这已经很老了,但我需要在这里为那些分享我的问题的人提供答案。无论如何,我已经在这几天不停地挣扎了几天。当您的问题明确地发布在C#中时,每个人似乎都在为VB发布代码。

您正在寻找的是:

   protected void GridView_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        e.Row.Cells[columntobedisabled].Enabled = false;
    }

其中&#39; columntobedisabled&#39;是要禁用的列的索引号...例如。 1

答案 2 :(得分:0)

如果是C#网站或WebForm,请在Page_Load()中的文件后面的代码中输入以下代码

protected void Page_Load(object sender, EventArgs e)
{
    // Your code

    ((BoundField)GridView1.Columns[columnIndex]).ReadOnly = true;
}

这样做也将有助于克服错误

System.ArgumentOutOfRangeException:'指定的参数超出有效值范围。参数名称:索引'

答案 3 :(得分:-1)

您需要将权限"ReadOnly= true"提供给您不想编辑的列。

例如

GridView1.columns[1].ReadOnly= true;

您可以在GridView的RowDataBound事件中使用此行。