0
我有一个gridview。 gridview有一个保存文本的文本框多行。之后,我有一个名为批准的图像按钮列,一个名为未批准。我想在单击批准或未批准之前强制用户阅读多行框内的文本。我怎样才能实现这个程序化?我知道我应该创建一个Rowdatabound事件,但是我应该如何处理代码?我正在使用C#ASP.NET Web应用程序。Gridview点击行启用控件
我有一个gridview。 gridview有一个保存文本的文本框多行。之后,我有一个名为批准的图像按钮列,一个名为未批准。我想在单击批准或未批准之前强制用户阅读多行框内的文本。我怎样才能实现这个程序化?我知道我应该创建一个Rowdatabound事件,但是我应该如何处理代码?我正在使用C#ASP.NET Web应用程序。Gridview点击行启用控件
我知道你可以使用javascript来跟踪浏览器的滚动条,但我个人从来没有遇到过类似的文本框功能。我会建议尝试一个稍微不同的方法,为什么不添加一个额外的列给你的网格视图有一个复选框控制 - 我已阅读并接受协议。而审批时复选框被选中按钮才会enabledd,这里有一个例子:
ASPX:
<div>
<asp:ScriptManager ID="sm" runat="server" />
<asp:UpdatePanel ID="updatePanel" runat="server">
<ContentTemplate>
<asp:GridView ID="grid" runat="server" AutoGenerateColumns="false" OnRowDataBound="grid_RowDataBound">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:TextBox TextMode="MultiLine" runat="server" ID="txtAgreement" Text='<%# Eval("Agreement") %>' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
I have read and accepted the agreement
<asp:CheckBox ID="chkAgreement" AutoPostBack="true" runat="server" OnCheckedChanged="CheckedChanged" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:Button ID="btnAccept" runat="server" Text="Accept" OnClick="Accept" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</ContentTemplate>
</asp:UpdatePanel>
</div>
后面的代码:
public partial class Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
var items = new List<License> { new License { Agreement = "Agreement 1" }, new License { Agreement = "Agreement 2" } };
grid.DataSource = items;
grid.DataBind();
}
}
protected void Accept(object sender, EventArgs e)
{
}
protected void grid_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
(e.Row.FindControl("btnAccept") as Button).Enabled = false;
}
protected void CheckedChanged(object sender, EventArgs e)
{
var chkAgreement = sender as CheckBox;
Button btnAccept = null;
if (chkAgreement != null)
{
var row = chkAgreement.Parent.Parent as GridViewRow;
btnAccept = row.FindControl("btnAccept") as Button;
if (btnAccept != null)
if (chkAgreement.Checked)
btnAccept.Enabled = true;
else
btnAccept.Enabled = false;
}
}
}
public class License
{
public string Agreement { get; set; }
}
它不是'rowdatabound'事件 – 2013-04-11 08:19:41
将jscript添加到按钮,使输入到多行框。 – Vladimir 2013-04-11 08:23:16
我相信这是rowdatabound,因为我想要的是:当用户点击特定的行时,这一行中的两个图像按钮将被启用。否则图像按钮将被禁用。 – Equilibrium 2013-04-11 08:40:17