2013-04-11 2 views
0

У меня есть сетка. В gridview есть многострочный текстовый блок, который сохраняет текст. После этого у меня есть столбец с именем imagebutton, который называется одобренным, и один из них не одобрен. Я хочу заставить пользователя до щелчка, одобренного или не одобренного, чтобы прочитать текст внутри многострочного окна. Как я могу добиться этого программно? Я знаю, что я должен создать событие Rowdatabound, но что мне делать с кодом? Я использую веб-приложение C# ASP.NET.Gridview нажмите на элементы управления включением строки

+0

его не 'rowdatabound' событие –

+0

Добавьте jscript к кнопке, которая позволяет вводить многострочный блок. – Vladimir

+0

Я считаю, что это rowdatabound, потому что я хочу: когда пользователь нажимает на определенную строку, две кнопки изображения в этой строке будут включены. В противном случае кнопки изображения будут отключены. – Equilibrium

ответ

0

Я знаю, что вы можете отслеживать полосу прокрутки браузера с помощью javascript, но я лично никогда не сталкивался с подобной функциональностью для текстового поля. Я бы предложил попробовать несколько иной подход, почему бы вам не добавить дополнительный столбец в виде сетки, который имеет элемент управления флажком для - Я прочитал и принял соглашение. И Approve кнопка будет 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; } 
} 
Смежные вопросы