0

ASP.NET は初めてです

私がやろうとしているのは、lblProposedID フィールドで一意の ID (ProposedID) を取得し、それを別のページに渡すことです。

GridView のラベル

<asp:TemplateField HeaderText="ID" 
    SortExpression="ID" ItemStyle-Width="5%">
    <ItemTemplate>
    <asp:Label ID="lblProposedID" runat="server" 
        Text='<%#Eval("ProposedID") %>'>
    </asp:Label>
    </ItemTemplate>
    <FooterTemplate>
    </FooterTemplate>
</asp:TemplateField>

コードビハインド

private void GridView1_RowCreated(object sender, System.Web.UI.WebControls.GridViewRowEventArgs e)
{
    String rColor;
    System.Drawing.ColorConverter colConvert = new ColorConverter();

    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        int RowNum = e.Row.RowIndex;
        if (RowNum % 2 == 1)
        {
            rColor = "#FFFFFF";
            //e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor='#DDDDDD'");
        }
        else
        {
            rColor = "#F5F5F5";
            //e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor='" ++ "'");
        }

        e.Row.BackColor = (System.Drawing.Color)colConvert.ConvertFromString(rColor);
        e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor='" + rColor + "'");
        e.Row.Attributes.Add("onmouseover", "this.style.backgroundColor='#00FFFF'");
        e.Row.Attributes.Add("onclick", "window.open('popup.aspx?ProposedID=" + (Label)  e.Row.FindControl("lblProposedID") + 
        "','cal','width=600,height=300,left=270,top=180')"); 
        //e.Row.Attributes["onclick"] = this.Page.ClientScript.GetPostBackClientHyperlink(this.GridView1, "Select$" + e.Row.RowIndex);
    }
}

これは、私がそれを機能させることができなかったときの行です。

e.Row.Attributes.Add("onclick", "window.open('popup.aspx?textbox={0}" + (Label)e.Row.FindControl("lblProposedID") + 
"','cal','width=600,height=300,left=270,top=180')"); 

助けてください。前もって感謝します。

4

2 に答える 2

1

js 行の作成方法の一部を次のように変更する必要があります。

((Label)e.Row.FindControl("lblProposedID")).Text

これにより、ラベルから実際のテキストが取得されます。

于 2012-10-11T17:28:47.040 に答える
0

OnRowDataBound代わりに使用してください。そのイベントではテキストは常に null でしたが、RowDataBound に変更すると、ID が選択されました

RowDataBound イベントを追加

<asp:GridView runat="server" ID="GridView1" 
AutoGenerateColumns="false" OnRowDataBound="GridView1_RowCreated">

コードビハインド

    protected void GridView1_RowDataBound(object sender, System.Web.UI.WebControls.GridViewRowEventArgs e)
    {
        String rColor;

        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            int RowNum = e.Row.RowIndex;
            if (RowNum % 2 == 1)
            {
                rColor = "#FFFFFF";
                //e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor='#DDDDDD'");
            }
            else
            {
                rColor = "#F5F5F5";
                //e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor='" ++ "'");
            }

            e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor='" + rColor + "'");
            e.Row.Attributes.Add("onmouseover", "this.style.backgroundColor='#00FFFF'");
            e.Row.Attributes.Add("onclick", "window.open('popup.aspx?ProposedID=" + ((Label)e.Row.FindControl("lblProposedID")).Text +
            "','cal','width=600,height=300,left=270,top=180')");
            //e.Row.Attributes["onclick"] = this.Page.ClientScript.GetPostBackClientHyperlink(this.GridView1, "Select$" + e.Row.RowIndex);
        }
    }
于 2012-10-11T18:55:49.000 に答える