我希望能够在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;
}
答案 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事件中执行此操作。以下链接提供了可以帮助您的示例代码。
答案 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;
}