0

行ごとに一意の参照番号を持つASP:Labelフィールドを含むGridViewテンプレートフィールドがあります。また、そのコントロールに割り当てられたOpen Javascript関数があり、新しいウィンドウでURLを開き、同じ参照番号のドキュメントを表示します。

ユーザーが特定の行のLinkBut​​tonをクリックしたときに参照番号を取得し、ウィンドウが開く前にそれをJavascript関数に渡す方法がわかりません。

コード:

enter code here

function openPreview() 
{
     var url = "quotereport.aspx?view=esq&&ref=REFNUMBER"; window.open(url);
}

<asp:TemplateField HeaderText="" ShowHeader="False">
    <ItemTemplate>
    <asp:LinkButton ID="lbNewWindow" runat="server" OnClientClick="openPreview    ()">Window</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>

どんな助けでも大歓迎です。


GUIDを多くのテーブルの外部キーとして使用する必要があります

GUIDを使用するデータベースを設計しましたUserIDが、他の多くのテーブルに外部キーとして追加UserIdしました。非常に多くのデータベース入力を計画しているため、これを適切に設計する必要があります。

ASPメンバーシップテーブルも使用します(メンバーシップ、ユーザー、およびロールのみのプロファイルではありません)。

したがって、現在、他のすべてのテーブルでGUIDをPKおよびFKとして使用していますが、これはおそらく悪い設計ですか?私が思うものはおそらくより良いものであり、私の質問のソースです。UsersテーブルUserId(int)を主キーとして追加し、このフィールドを他のテーブルやユーザーへの外部キーとして使用GUID UserIdして参照する必要がありますaspnet_membershipか?

aspnet_membership{UserID(uniqueIdentifier)}
Users{
UserID_FK(uniqueIdentifier) // FK to aspnet_membership table
UserID(int) // primary key in this table --> Should I add this
...
}
In other tables user can create items in tables and I always must add UserId for example:
TableA{TableA_PK(int)..., CreatedBy(uniqueIdentifier)}
TableB{TableB_PK(int)..., CreatedBy(uniqueIdentifier)}
TableC{TableC_PK(int)..., CreatedBy(uniqueIdentifier)}
...
4

1 に答える 1

2

RowDataBound イベントをグリッドに追加する必要があります。RowDataBound イベントでは、作成されたすべての行にデータでアクセスできます。html の代わりに JavaScript をリンク ボタンにバインドし、RowDataBound イベントから参照番号を JavaScript 関数に渡します。

    protected void gvListing_RowDataBound(object sender, GridViewRowEventArgs e)
    {           
        if (e.Row.RowType == DataControlRowType.DataRow)
        {                
          System.Web.UI.WebControls.LinkButton lbNewWindow= new System.Web.UI.WebControls.LinkButton();    
                lbNewWindow = (System.Web.UI.WebControls.LinkButton)e.Row.FindControl("lbNewWindow");                    
                if (lbNewWindow!= null)
                {
                    string YourRefNumber = DataBinder.Eval("e.Row.DataItem", "ColumnNameInDataSource").ToString();
                    lbNewWindow.Attributes.Add("onclick","openPreview('"+ YourRefNumber + "')");

                } 
         }          
    }
于 2012-05-16T11:10:26.827 に答える