2016-07-19 2 views
-1

GridView에 "Weightage"라는 열이 있습니다. "total"이라고하는 gridview 외부에있는 텍스트 상자가 있습니다.이 텍스트 상자를 열 Weightage 바로 아래에 정렬하려고합니다. 뒤에Rowbound 이벤트에서 GridView 열의 너비를 가져 오는 방법은 무엇입니까?

</asp:GridView> 
    <div> 
      <span id="q1totalweightage" runat="server">Total<asp:TextBox ID="txtq1totalweightage" runat="server" ></asp:TextBox></span> 
    </div> 

코드 :

protected void grvGoals_RowDataBound1(object sender, GridViewRowEventArgs e) 
{ 
    switch (e.Row.RowType) 
    { 
     case DataControlRowType.DataRow: 
     q1totalweightage.Attributes.Add("style", "margin-left: " +  e.Row.Cells[0].Width + "px;"); 
break; 
    } 

참고 : 내가 어떤 이유로 바닥 글에서이 전체 텍스트 상자를 배치 할 수 있다고 가정합니다.

답변

0

은 서버 측에서 GridView 열의 계산 된 너비를 얻을 수 없습니다. 이를 위해서는 JavaScript을 사용해야합니다. 이를 위해

당신은 또한이

<asp:TemplateField HeaderText="Contact Name"> 
    <ItemTemplate> 
     <asp:Label ID="ContactName" runat="server" 
      CssClass="my-column" 
      Text='<%# Eval("ContactName") %>'> 
     </asp:Label>     
    </ItemTemplate> 
</asp:TemplateField> 

처럼 열을 스팬에 대한 runat="server"을 사용할 필요를 클래스 명을주지해야한다.

<span id="q1totalweightage">Total 
    <asp:TextBox ID="txtq1totalweightage" runat="server" > 
    </asp:TextBox> 
</span> 

바닐라 자바 ​​스크립트

document.addEventListener("DOMContentLoaded", function (event) { 
    var column = document.getElementsByClassName("my-column")[0].parentNode; 
    var row = column.parentNode; 
    var newMargin = row.clientWidth - column.clientWidth; 
    document.getElementById("q1totalweightage").style.marginLeft = newMargin + "px"; 
}); 

또는 jQuery를

$(document).ready(function() { 
    var column = $(".my-column:first").closest("td"); 
    var row = column.closest("tr"); 
    //var newMargin = row.width() - column.width(); 
    var newMargin = row.outerWidth() - column.outerWidth(); 
    $("#q1totalweightage").css("margin-left", newMargin + "px"); 
}); 

P.S :이 코드는 열 담당자 이름 테이블의 마지막 열 것으로 가정합니다.

관련 문제