2013-09-30 88 views
0

大师,的GridView:更改按钮文本和链接在页面加载

我与模板字段按钮GridView和我想要改变上在页面加载的用户类型的按钮上的文字。

我想从Gridview中获取按钮来改变文本和链接,但控件总是返回null。了解如何在页面加载时更改文字和链接将非常有帮助。

TryCast(row.Cells(0).Controls(0).FindControl( “idAppearButton”), 按钮)

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 = TryCast(row.Cells(0).Controls(0).FindControl("idAppearButton"), Button) 
        'button.Text = "Buy" 
       Next 

      End If 

     End Sub 



<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> 

回答

1

你必须使用Row.FindControl(id)找到参考控制。如果使用TemplateFields,则不能使用Cell.Text,该工作仅适用于BoundFields

button = DirectCast(row.FindControl("idAppearButton"), Button) 
相关问题