【解決方法】コード ビハインドが ASP:LABEL 変数で機能しないようです


簡単に修正できるように見える問題がありますが、なぜこれが機能しないのかわかりません。 他のアプリでこれを問題なく実行しました。

上部に情報のみを表示する ASPX ページと、編集可能な関連レコードを表示する Gridview があります。 ASP:LABEL を使用して、ページの上部にデータ フィールドを表示します。 コード ビハインドは、ページの読み込み中にデータの取得を処理します。 私が得ているのは、データのないフィールドの凡例です。 知っていることはすべて試し、Google でできることはすべて試しました。 以下のコードは、すべてのデータ フィールドを削除し、コード ビハインドで “StuffToShow” に設定される変数 (m) に減らしたことを示しています。 結果のページが表示されるはずです

「Case Number: StuffToShow」ですが、「Case Number: 」のみが表示されます

なぜこれを行っているのかわかりません。 コメントアウトされた領域で、私が他のことを試してもうまくいかなかったことがわかります。 添付のコードは完全ではなく、短くするために関連性があると思われるもののみが含まれています。

どんなアイデアや提案も大歓迎です。 これがうまくいかないのには、私には見えない単純な理由があるに違いありません。

ありがとう!!!

ASP.NET
<%@ Page Language="C#" MasterPageFile="~/SiteMaster.master"   AutoEventWireup="false" CodeFile="DisplayDerivativesDetail.aspx.cs" Inherits="DisplayDerivativesDetail" %>

<asp:Content ID="Content1" ContentPlaceHolderID="PageHeading" Runat="Server">
 	    <h3>Monthly Derivatives - Display Detail</h3>
 </asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="PageContent" Runat="Server">
 
    <div id="main">
         <asp:Label ID="lblInstructions" runat="server" Text="Display Detail Information:" >
        </asp:Label><br /><br />
        
        <!-- drop down list for detail status -->
        <asp:Label ID="lblStatus" runat="server" Text="Detail Status:" Width="80px" ></asp:Label>
        <asp:DropDownList ID="ddlStatus" runat="server" Width="75px">
            <asp:ListItem Text="Active" Selected="True" Value="AC" />
            <asp:ListItem Text="Inactive"  Value="IN" />
        </asp:DropDownList><br /><br />  

        <asp:Label ID="Label1" runat="server" Text="Case Number:" ></asp:Label>   
        <asp:Label ID="m" runat="server" ></asp:Label><br /><br />
        <!-- <asp:Label ID="Label2" runat="server" Text="NCP Name: "></asp:Label>   
        <asp:Label ID="lblNCPName" runat="server" Text="Data"  Width="280px"></asp:Label>
        <br />
        <asp:Label ID="Label3" runat="server" Text="Court Number: " Width="125px"></asp:Label>   
        <asp:Label ID="lblCourtNumber" runat="server" Width="125px"></asp:Label>
        <asp:Label ID="Label4" runat="server" Text="Monthly Amount: " ></asp:Label>   
        <asp:Label ID="lblMonthlyAmt" runat="server" Width="125px"></asp:Label>
        <br />
        <asp:Label ID="Label5" runat="server" Text="Start Date: " ></asp:Label>   
        <asp:Label ID="lblStartDate" runat="server" Width="125px"></asp:Label>
        <asp:Label ID="Label6" runat="server" Text="Review Date: "></asp:Label>   
        <asp:Label ID="lblReviewDate" runat="server" Width="125px"></asp:Label>
        <asp:Label ID="Label7" runat="server" Text="End Date: "></asp:Label>   
        <asp:Label ID="lblEndDate" runat="server" Width="125px"></asp:Label>
        <br /><br /> -->
        
        <!-- grid of Detail records for a selected Case  -->
        <asp:GridView ID="gvDetail" Runat="server" 
                 AllowPaging="True" AllowSorting="True" 
                 AutoGenerateEditButton="True" 
                 AutoGenerateColumns="False" 
                 BackColor="LightGray" 
                 BorderColor="#3366CC" 
                 BorderStyle="None" 
                 BorderWidth="1px"
                 CellPadding="4"  
                 DataKeyNames="CaseID" 
                 DataSourceID="odsDetail" 
                 Font-Size="X-Small"
                 OnRowEditing="gvDetail_RowEditing"
                 PagerSettings-Mode="Numeric" 
                 ShowFooter="True" > 
                <FooterStyle CssClass="HeaderFooter"></FooterStyle>
                <HeaderStyle Font-Bold="True" Wrap="True" CssClass="HeaderFooter"></HeaderStyle>
                <AlternatingRowStyle Font-Bold="False" BackColor="GhostWhite"></AlternatingRowStyle>
                <Columns>
                
                <asp:BoundField DataField="PaymentDate" HeaderText="Payment Date" SortExpression="PaymentDate" ItemStyle-Wrap="false" />
                <asp:BoundField DataField="Amount" HeaderText="Payment Amt" SortExpression="Amount" ItemStyle-Wrap="false" />
                <asp:BoundField DataField="DetailComment" HeaderText="Comment" SortExpression="DetailComment" ItemStyle-Wrap="false" />
                <asp:BoundField DataField="DetailAddedBy" HeaderText="Added By" SortExpression="DetailAddedBy" ItemStyle-Wrap="false" />
                <asp:BoundField DataField="DetailAdded" HeaderText="Added" SortExpression="DetailAdded" ItemStyle-Wrap="false" />
                <asp:BoundField DataField="DetailUpdatedBy" HeaderText="Updated By" SortExpression="DetailUpdatedBy" ItemStyle-Wrap="false" />
                <asp:BoundField DataField="DetailUpdated" HeaderText="Updated" SortExpression="DetailUpdatedBy" ItemStyle-Wrap="false" />
               
                <asp:TemplateField HeaderText="Detail ID" SortExpression="DetailID" visible="false">
                    <EditItemTemplate>
                        <asp:TextBox ID="eitDetailID" runat="server" ReadOnly="True" Text='<%# Bind("DetailID") %>'></asp:TextBox>
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:Label ID="itDetailID" runat="server" Text='<%# Bind("DetailID") %>'></asp:Label>
                    </ItemTemplate>
                    <ItemStyle Wrap="False" />
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Case ID" SortExpression="CaseID" visible="false">
                    <EditItemTemplate>
                        <asp:TextBox ID="eitCaseID" runat="server" ReadOnly="True" Text='<%# Bind("CaseID") %>'></asp:TextBox>
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:Label ID="itCaseID" runat="server" Text='<%# Bind("CaseID") %>'></asp:Label>
                    </ItemTemplate>
                    <ItemStyle Wrap="False" />
                </asp:TemplateField>
                
                <asp:BoundField DataField="CaseID" HeaderText="Case ID" SortExpression="CaseID"  Visible="false"  />
                           
            </Columns>
        </asp:GridView>

C#
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using ParameterPasser;
public partial class DisplayDerivativesDetail : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
            //*  Grab the CaseID passed from DisplayDerivativesCases.aspx and convert to integer *// 
            //int intCaseID;
            //string strCaseID = Request.QueryString["CaseID"];
            //intCaseID = Convert.ToInt32(strCaseID);
            //// Get Case Info for display only
            //DerivativesBAL.DerivativesBAL obj10 = new DerivativesBAL.DerivativesBAL();
            //DataSet dsName = obj10.GetCase(intCaseID);
            m.Text = "StuffToShow";
            //lblCaseNumber.Text = dsName.Tables[0].Rows[0]["CaseNumber"].ToString();
            //lblNCPName.Text = dsName.Tables[0].Rows[0]["NCPNameLast"] + ", " +
            //dsName.Tables[0].Rows[0]["NCPNameFirst"] + " " +
            //dsName.Tables[0].Rows[0]["NCPNameMiddle"].ToString();
            //lblCourtNumber.Text = dsName.Tables[0].Rows[0]["CourtNumber"].ToString();
            //lblMonthlyAmt.Text = dsName.Tables[0].Rows[0]["MonthlyAmt"].ToString();
            //lblStartDate.Text = dsName.Tables[0].Rows[0]["StartDate"].ToString();
            //lblReviewDate.Text = dsName.Tables[0].Rows[0]["ReviewDate"].ToString();
            //lblEndDate.Text = dsName.Tables[0].Rows[0]["EndDate"].ToString();
            //if (lblCaseNumber.Text == null)
            //{
            //    lblCaseNumber.Text = "EMPTY";
            //}
            //else
            //{
            //    lblCaseNumber.Text = "HAS INFO";
            //}
    }

解決策 1

やあ、

何か問題があるに違いありませんが、このコードを私の IDE (Visual Studio 2010) で実際に実行したところ、問題なく動作しました。 「ケース番号: StuffToShow」と表示されます。 コードのコメント部分の操作も確認しましたが、それらはすべて期待どおりに機能します。

ページが読み込まれる前に他の操作があるかどうか、またはマスターファイルに同じ ID を持つ変数があるかどうかを確認することをお勧めします。

ありがとう
サニーK

解決策 2

コードファイルが見つからない場合は、別のアイデアが考えられます。 スペルを確認し、それが見つかることを確認します。
なぜ機能するのかわかりませんが、VB.Netを使用して機能しました

Web アプリケーション用にストック VS2008 ビルドを使用しました。
デフォルトの aspx にドロップ:

XML
<asp:Label ID="Label1" runat="server" Text="Case Number:" ></asp:Label>
 <asp:Label ID="m" runat="server" ></asp:Label><br /><br />

そして、デフォルトのaspx vbファイルの下にドロップしました:

VB
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    m.Text = "StuffToShow"
End Sub

そして結果は

Case Number:StuffToShow

解決策 3

まず、回答してくれたすべての人に感謝したいと思います。 私のコードが機能していると聞いてうれしかったです。 回答を読んだ後、私は自分が何をしたかを再評価しました。 私は常にコードで作業しており、デザイナーを使用したことはありません。 そこで、VS 2005 でデザイナーを起動しました。デザイン ビューで “m” 変数を確認し、そのプロパティを開きました。 イベントを調べたところ、DataBinding と Load が空白であることがわかりました。 両方に Page_Load を選択したところ、うまくいきました。

理由はまだわかりませんが、これは私に見て学ぶためのまったく新しい場所を与えてくれます。

もう一度サンクス。 このフォーラムはいつでも利用でき、探索に役立つヒントを提供してくれます。

コメント

タイトルとURLをコピーしました