繁体   English   中英

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

[英]How to Enable or Disable Text Box in GridView using C#

我希望能够启用/禁用gridview内的文本框。 我有case语句,在case语句中当Case = 1我想在gridview中禁用一个名为txtType 这是我的代码:

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;
}

由于它在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;

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

参考

您可以在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;
        }
    }
}
 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;
 }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM