簡體   English   中英

需要幫助在 Asp.Net 中自定義 GridView 控件

[英]Need help with customizing GridView control in Asp.Net

我用模板和所有這些構建了一個可定制的 GridView。 我提供了具有 TextBoxes、DropDownList 和 RadioButtonList 控件的<ItemTemplate><EditItemtemplate>字段。 現在我想使用方法(函數)來呈現數據(例如,在 db 表中我的性別為 True(forMale)和 False(for Female)。現在我想要 GridView 中的 Label 控件調用一個方法,傳遞整個 ZBB404EDC3ACD15CEA4D行到它,然后如果在db中gender == True,該方法應該返回一個字符串“Male”,並且這個字符串應該是調用該方法的label的文本......

此外,當我編輯任何行時,我已經放置了性別的 RadioButtonList,但默認情況下它沒有選擇單選按鈕。如果用戶忘記單擊單選按鈕,這會導致錯誤。 我希望它檢查 Gender 的先前值,並根據先前的值保持選擇一個單選按鈕。 此外,當我按下編輯按鈕時,我無法在 GridView1_rowupdating 方法中使用 FindControl 方法來查找<EditItemTemplate>的控件。 我怎樣才能找到它們?

另外,我在 GridView 中放了兩個按鈕。 我希望僅對那些approval_stage.= 零的行啟用這兩個按鈕。

一些代碼在這里:

我的文件.aspx:-

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" AllowSorting="True" PageSize="3" DataKeyNames="request_no" onrowediting="GridView1_RowEditing" onrowupdating="GridView1_RowUpdating" >

<Columns>

<asp:ButtonField DataTextField="request_no" HeaderText="request_no" CommandName="request_no" />

<asp:TemplateField HeaderText="date">

  <EditItemTemplate>
      <asp:Calendar ID="Calendar1" runat="server" ></asp:Calendar>
  </EditItemTemplate>

  <ItemTemplate>
      <asp:Label ID="Label5" runat="server" Text='<%# Bind("date") %>'></asp:Label>
  </ItemTemplate>

</asp:TemplateField>

<asp:TemplateField HeaderText="approval_stage">
  <EditItemTemplate>
    <asp:DropDownList ID="DropDownListApproval" runat="server">
      <asp:ListItem Value ="0" >0</asp:ListItem>
      <asp:ListItem Value ="1" >1</asp:ListItem>
      <asp:ListItem Value ="2" >2</asp:ListItem>
      <asp:ListItem Value ="3" >3</asp:ListItem>
      <asp:ListItem Value ="4" >4</asp:ListItem>
    </asp:DropDownList>
</EditItemTemplate>

<ItemTemplate>
    <asp:Label ID="Label1" runat="server" Text='<%# DisplayApproval(Eval("approval_stage")) %>'></asp:Label>
</ItemTemplate>



 </asp:TemplateField>
    <asp:BoundField DataField="name" HeaderText="name" />
    <asp:TemplateField HeaderText="gender">
    <EditItemTemplate>
    <asp:RadioButtonList ID="RadioButtonListGender" runat="server">
    <asp:ListItem Value="False">Male</asp:ListItem>
    <asp:ListItemValue="True">Female</asp:Li…
    </asp:RadioButtonList>
    </EditItemTemplate>
    <ItemTemplate>
    <asp:Label ID="Label2" runat="server" Text='<%# DisplayGender(Eval("gender")) %>'></asp:Label>
    </ItemTemplate>
    </asp:TemplateField>
    <asp:ButtonField ButtonType="Button" CommandName="approve" Text="approve" />
    <asp:ButtonField ButtonType="Button" CommandName="reject" Text="reject" />
    <asp:CommandField ButtonType="Button" HeaderText="Edit" ShowEditButton="True" ShowHeader="True" />
    </Columns>
    </asp:GridView>



protected string DisplayGender(object gender)
{
string str = gender.ToString();
if (str == "False")
str = "Male";
else if (str == "True")
str = "Female";

return str;
}

protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
//Some Code here
}

您可以在 gridview 的 rowdatabound 事件中使用 findcontrol。 看到這個: GridView 的 RowDataBound function

以及有關 msdn 的一些詳細信息: http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.rowdatabound.aspx

 protected void MyGrid_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow && e.Row.RowState == DataControlRowState.Edit)
        {
            Label lbl = (Label)e.Row.FindControl("lblId");

        }

    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM