0

私はを使用しており、その中に、、、GridViewおよびの4つの列がlabelIDあります。これは単純な合格または不合格です。データが更新されたら、次のリロード時にデータをプルして、ユーザーが合格または不合格の場合に選択した値を表示したいと思います。コードは次のとおりです。fNamelNameGradeGradeRadiobuttonlist

<asp:TemplateField>
           <ItemTemplate>
             <asp:RadioButtonList ID="rblChoices" runat="server" OnSelectedIndexChanged="rblChoices_SelectedIndexChanged" Text='<%# Eval("Grade") %>'>
               <asp:ListItem Value="Pass" Text="Pass"></asp:ListItem>
                 <asp:ListItem Value="Fail" Text="Fail"></asp:ListItem>
             </asp:RadioButtonList>
            </ItemTemplate>
</asp:TemplateField>

C#コード:

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        BindData();
    }
}
private void BindData()
{
    string connectiongString = "Data Source=WSCJTCSQ1;Initial Catalog=LiquorStore;Integrated Security=True";
    SqlConnection myConnection = new SqlConnection(connectiongString);
    SqlDataAdapter ad = new SqlDataAdapter("SELECT id, firstname, lastname, nickname, Grade FROM Company", myConnection);
    DataSet ds = new DataSet();
    ad.Fill(ds);
    gvUsers.DataSource = ds;
    gvUsers.DataBind();
}

前もって感謝します!

4

1 に答える 1

2

これには、GridViewRowDataBoundイベントを使用する必要があります

HTML

<asp:GridView runat="server" ID="gvUsers" OnRowDataBound="gvUsers_RowDataBound"  AutoGenerateColumns="False">
    <Columns>
        <asp:TemplateField>
            <ItemTemplate>
                <%# Eval("Name") %>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField>
            <ItemTemplate>
                <asp:RadioButtonList ID="rblChoices" runat="server">
                     <asp:ListItem Value="Pass" Text="Pass"></asp:ListItem>
                     <asp:ListItem Value="Fail" Text="Fail"></asp:ListItem>
                </asp:RadioButtonList>
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

C#コード

非常に単純な会社クラス-Company.cs

public class Company
{
    public string Name { get; set; }
    public string Grade { get; set; }
}

.aspx.cs

protected void Page_Load(object sender, EventArgs e)
{

    List<Company> companies = new List<Company>()
        {
            new Company(){ Name = "Toyota", Grade = "Pass"},
            new Company(){ Name = "Form", Grade = "Fail"}
        };

    gvUsers.DataSource = companies;
    gvUsers.DataBind();
}


protected void gvUsers_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            if (e.Row.DataItem != null)
            {
                string grade = DataBinder.Eval(e.Row.DataItem, "Grade") as string;
                if (!string.IsNullOrEmpty(grade))
                {
                    RadioButtonList radio = e.Row.FindControl("rblChoices") as RadioButtonList;
                    radio.Items.FindByValue(grade).Selected = true;
                    //You can use this to select as well - see comments from Andomar
                    //radio.SelectedValue = grade;
                }
            }
        }
    }

出力

ここに画像の説明を入力してください

于 2012-11-01T20:51:02.360 に答える