2013-09-30 2 views
1

지도자에 변경 버튼 텍스트와 링크, 내 쿼리 또한 는 GRIDVIEW : ButtonField : 페이지로드

Gridview:TemplateField에 나는 ButtonField와의 gridview 있습니다. 페이지로드시 사용자 유형에 따라 텍스트를 변경하고 싶습니다.

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
     If Trim(Request.QueryString("Msg")) <> "" Then 
      If InStr(Request.QueryString("Msg"), "<") > 0 Then 
       Response.Write(Mid(Request.QueryString("Msg"), 1, InStr(Request.QueryString("Msg"), "<"))) 
      Else 
       Response.Write(Request.QueryString("Msg")) 
      End If 
     End If 
     If Page.IsPostBack = False Then 
      Dim sSeries As String 

      sSeries = "Aim NBDE Part 1" 

      Dim o_cmd As SqlCommand 
      Dim o_reader As SqlDataReader 
      o_Con = New SqlConnection(GlobalVarC.DataS) 
      o_Con.Open() 

      Dim ds As New Data.DataSet 
      Dim da As SqlDataAdapter 

      Dim ExamId As String 
      S_Sql = "SELECT SNo from Exam_Ser where Series='" & sSeries.ToString & "'" 
      o_cmd = New SqlCommand(S_Sql, o_Con) 
      o_reader = o_cmd.ExecuteReader 
      ExamId = "" 
      Dim ExamIdTmp As String 
      While o_reader.Read 
       If ExamId.Equals("") Then 
        ExamId = ExamId + "SNo = " 
       Else 
        ExamId = ExamId + " OR SNo = " 
       End If 
       ExamIdTmp = o_reader(0).ToString 
       ExamId = ExamId + ExamIdTmp 
       ExamId = ExamId + "" 
      End While 
      o_reader.Close() 
      o_cmd.Dispose() 

      S_Sql = "SELECT Name from Exam where " & ExamId.ToString 

      da = New SqlDataAdapter(S_Sql, o_Con) 
      da.Fill(ds) 


      GridSubject.DataSource = ds 
      GridSubject.DataBind() 
      da.Dispose() 
      ds.Dispose() 
      o_Con.Close() 

      For Each row As GridViewRow In GridSubject.Rows 
       Dim button As Button 
       button = DirectCast(row.FindControl("idAppearButton"), Button) 
       button.Text = "Buy" 
      Next 

     End If 

    End Sub 

나는 GridSubject_SelectedIndexChanged에서 버튼 클릭에 대한 작업을 수행 할 수있게되었습니다.

텍스트를 변경하려면 Gridview에서 버튼을 가져 오려고합니다. 일부 검색을 시도하고 'GridSubject_SelectedIndexChanged'에서 클릭 버튼을 제어하는 ​​방법을 찾았지 만 페이지로드는 아닙니다.

페이지로드시 ButtonField CommandName = "ViewResults"핸들을 얻는 방법에 대한 지침을 얻을 수 있다면 정말 도움이 될 것입니다. 이 같은 그리드에 바인딩으로

    <asp:ButtonField ButtonType="Button" CommandName="ViewResults" Text="Results" > 
           <HeaderStyle HorizontalAlign="Center" VerticalAlign="Top" /> 
        </asp:ButtonField> 


<div id="gridViewId" align="center"> 
    <asp:GridView ID="GridSubject" runat="server" AutoGenerateColumns="False" CellPadding="3" 
         OnSelectedIndexChanged="GridSubject_SelectedIndexChanged" BackColor="#CCCCCC" 
         BorderColor="#E7E7FF" BorderStyle="None" BorderWidth="1px" 
     Width="714px" GridLines="Horizontal" 
         > 
         <EditRowStyle Font-Names="Calibri" /> 
         <EmptyDataRowStyle Font-Names="Calibri" /> 
         <FooterStyle BackColor="#B5C7DE" ForeColor="#4A3C8C" Font-Names="Calibri" /> 
         <AlternatingRowStyle BackColor="#F7F7F7" Font-Names="Calibri" /> 
         <Columns > 
          <asp:BoundField DataField="Name" HeaderText="Exam Name"> 
           <ItemStyle Width="140px" HorizontalAlign="Left" VerticalAlign="Top" /> 
           <HeaderStyle HorizontalAlign="Left" /> 
          </asp:BoundField> 
          <asp:TemplateField ItemStyle-Width="100px"> 
           <ItemTemplate> 
            <asp:RadioButtonList ID="RadioButtonList1" runat="server"> 
             <asp:ListItem Value="0">Part 1</asp:ListItem> 
             <asp:ListItem Value="1">Part 2</asp:ListItem> 
             <asp:ListItem Selected="True" Value="3">Part 1 &amp; 2</asp:ListItem> 
            </asp:RadioButtonList> 
           </ItemTemplate> 
           <FooterStyle HorizontalAlign="Left" /> 
           <HeaderStyle HorizontalAlign="Left" /> 
           <ItemStyle Width="100px" HorizontalAlign="Left"></ItemStyle> 
          </asp:TemplateField> 
          <asp:TemplateField ShowHeader="False"> 
           <ItemTemplate> 
            <asp:Button ID="idAppearButton" runat="server" 
            CommandName="MYCOMMAND" Text="Appear"> 
            </asp:Button> 
           </ItemTemplate> 
          </asp:TemplateField> 

          <asp:ButtonField ButtonType="Button" CommandName="ViewResults" Text="Results" > 
             <HeaderStyle HorizontalAlign="Center" VerticalAlign="Top" /> 
          </asp:ButtonField> 

          <asp:TemplateField HeaderText="Status"> 
          <ItemTemplate> 
          <asp:Label runat="server" Text="Not Completed"></asp:Label> 
          </ItemTemplate> 
          </asp:TemplateField> 

         </Columns> 
         <RowStyle BackColor="#E7E7FF" ForeColor="#000000" Font-Names="Calibri" /> 
         <SelectedRowStyle BackColor="#738A9C" Font-Bold="True" ForeColor="#F7F7F7" 
          Font-Names="Cambria" /> 
         <PagerStyle BackColor="#E7E7FF" ForeColor="#4A3C8C" HorizontalAlign="Right" 
          Font-Names="Calibri" /> 
         <HeaderStyle BackColor="#000000" Font-Bold="True" ForeColor="#F7F7F7" /> 
         <SortedAscendingCellStyle BackColor="#F1F1F1" /> 
         <SortedAscendingHeaderStyle BackColor="#808080" /> 
         <SortedDescendingCellStyle BackColor="#CAC9C9" /> 
         <SortedDescendingHeaderStyle BackColor="#383838" /> 

<SortedAscendingCellStyle BackColor="#F4F4FD"></SortedAscendingCellStyle> 

<SortedAscendingHeaderStyle BackColor="#5A4C9D"></SortedAscendingHeaderStyle> 

<SortedDescendingCellStyle BackColor="#D8D8F0"></SortedDescendingCellStyle> 

<SortedDescendingHeaderStyle BackColor="#3E3277"></SortedDescendingHeaderStyle> 
        </asp:GridView> 
        </div> 
+1

당신 캔트 액세스를,하지만 당신은 사용 할 수 있습니다 행 바운드 이벤트, 데이터가 gridview에 바인딩 할 때마다 불이납니다 –

+0

ButtonFiled를 TemplateField로 변환하거나 행 이벤트를 사용하는 두 가지 옵션이 있습니다. rowbound 이벤트에서 샘플에 대한 포인터를 얻을 수 있다면 도움이 될 것입니다. – Tectrendz

+1

나는 대부분 단순화 된 templatefield coz를 선호하는데, 잘 karl 이미 rowdatabound의 스 니펫 샘플 코드를 게시한다. –

답변

1

각 행 작업을 그리드 뷰의 RowDataBound 이벤트를 사용하여 페이지로드에

Protected Sub gridViewId_RowDataBound(ByVal sender As Object, ByVal e As GridViewRowEventArgs) 
    If e.Row.RowType = DataControlRowType.DataRow Then 
     ' Find the button to change the text of 
     Dim theButtonToChangeTextOf As Button = CType(e.Row.FindControl("idAppearButton"), Button) 
     theButtonToChangeTextOf.Text = theTextYouWantForTheButtonHere 
    End If 
End Sub