如何使用C#在GridView中启用或禁用文本框

时间:2014-01-02 21:17:15

标签: c# asp.net

我希望能够在gridview中启用/禁用文本框。我有案例陈述,在我的案例陈述Case = 1时,我想在我的gridview中禁用名为txtType的texbox。这是我的代码:

SqlDataAdapter da = new SqlDataAdapter(@"select * from my table ", con);
DataTable dtTable = new DataTable();
da.SelectCommand.Parameters.AddWithValue("@RSP_SET_SK", (RSP_SET_SK));
da.Fill(dtTable);

GridView1.DataSource = dtTable.DefaultView;
GridView1.DataBind();

DataRow dtTable_row = dtTable.Rows[0];

if (dtTable.Rows.Count > 0)
{
    DDL_TYPE.SelectedValue = dtTable_row.Field<string>("TYPE").ToString();
    ddlPr.SelectedValue = dtTable_row.Field<Int32>("ID").ToString();
}

DataRow row1 = dtTable.Rows[0];
int temp = Convert.ToInt32(row1["STATUS"]);

switch (temp)
{
   case 1:
     lblStatus.Text = temp + " - Initial Test.";

   break;
}

4 个答案:

答案 0 :(得分:2)

因为它在gridview中,所以你需要使用它..

GridViewRow gvr = (GridViewRow)(sender as Control).Parent.Parent;
string type = ((TextBox).gvr.FindControl("txtType"));

然后要禁用或启用,您可以使用..

type.Enabled = true;

我希望能让您了解如何做到这一点。

编辑:您可能需要使用foreach循环。

foreach(GridViewRow gvr in GridView1.Rows)
{
    string type = ((TextBox).gvr.FindControl("txtType"));
    type.Enabled = true/false;
}

这应该是我想象的。我经常在我的一个应用程序中使用这个foreach。

编辑2:

我刚刚意识到我把它放在一个不应该的时期。我的错。所以应该是这样。

string type = ((TextBox)gvr.FindControl("txtType"));

TextBox type = ((TextBox)gvr.FindControl("txtType"));

或者你可以像这样直接启用..

((TextBox)gvr.FindControl("txtType")).Enabled = true/false;

答案 1 :(得分:2)

您应该在 RowDataBound事件中执行此操作。以下链接提供了可以帮助您的示例代码。

Reference

答案 2 :(得分:2)

您可以在RowDataBound事件中执行此操作。首先,确保在aspx代码中设置OnRowDataBound属性,如下所示:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" OnRowDataBound="GridView1_RowDataBound">
</asp:GridView>

然后在代码中添加以下内容:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        DataRowView data = (DataRowView)e.Row.DataItem;
        TextBox txtType = (TextBox)e.Row.FindControl("txtType");
        int status = Convert.ToInt32(data["STATUS"]);
        if (status == 1)
        {
            txtType.Enabled = false;
        }
    }
}

答案 3 :(得分:0)

 a TextBox into a GridView

<asp:GridView ID="mygrid" runat="server">
 <Columns>
  <asp:TemplateField meta:resourcekey="TemplateFieldResource4">
   <ItemTemplate>
    <asp:TextBox ID="mytextBoxID" runat="server" Text="0,00" Enabled="false" />
   </ItemTemplate>
   <HeaderStyle Width="10%" HorizontalAlign="Right"/>
   <ItemStyle HorizontalAlign="Right" />
  </asp:TemplateField>
  </Columns>
</asp:GridView>

protected void any_Click(object sender, EventArgs e) {
   foreach (GridViewRow gvr in gvData.Rows)
       ((TextBox)gvr.FindControl("mytextBoxID")).Enabled = true;
 }