3

よろしくお願いします。私はデューデリジェンスを行い、2日間調査しましたが、オンラインチュートリアルが説明していることに頭を悩ませているようには見えません.

状況: リード プログラマーが立ち上がって終了します。会社の所有者は、私が (初心者の) VB.NET を側で行ったことを知っており、彼のイントラネット アプリ (C# で記述) の 2 つのカスタム ユーザー コントロール間で機能を接続するように私に依頼しました。 Visual Studio で...しかし、まだ C# を学習しています)。

以下はコントロールの簡単な説明ですが、うまくいけば正しい方向に進むのに十分です:

UserControl_1 には複数のリンクボタンが含まれており、クリックすると、UserControl_2 の ObjectDataSource で使用されている SelectParameter の値を変更する必要があります。

<asp:LinkButton ID="OpenBtn1" runat="server" Text="Show Open Requests" />
<asp:LinkButton ID="ClosedBtn1" runat="server" Text="Show Closed Requests" />

UserControl_2 (DataSource を使用した GridView):

<asp:ObjectDataSource ID="ObjectDataSource1" runat="server"
    SelectMethod="GetDataBy_Status" 
    TypeName="adhoc_TblAdptrs.adhoc_TblAdptr">
    <SelectParameters>
       <asp:Parameter DefaultValue="All" Name="status" Type="String" />
    </SelectParameters>
</asp:ObjectDataSource>

<asp:GridView1 ID="GridView1" runat="server" DataSourceID="ObjectDataSource1" />

私がやりたいことは、UserControl_2 の ObjectDataSource の SelectParameter に新しいデフォルト値を渡します。プロからの個別解説が楽しみです!あなたの助けは大歓迎です!

4

1 に答える 1

3

次に、パラメーター値を設定する UserControl2 のプロパティを公開します。

public string ParamValue { get; set; }

protected void ObjectDataSource1_Selecting(object sender, ObjectDataSourceSelectingEventArgs e) {
    if (ParamValue.Length > 0){
        e.InputParameters["status"] = ParamValue;
    }
}

また、ページで、コントロールにプロパティを設定するパブリック メソッドを作成します。

public void SetParamValue(string Value){
    UserControl_2.ParamValue = Value;
}

ここから、linkbutton クリック イベントで、ページのメソッドを使用してパブリック プロパティを設定するだけです。

  void OpenBtn1_Click(Object sender, EventArgs e){
     ((YourPageClassHere)this.Page).SetParamValue("Open");
  }

このメソッドはジョブを完了しますが、この特定のページへのリンク ボタンを持つコントロールを結合します。

カップリングを削除したい場合は、メソッドを使用してインターフェイスを実装できます

public interface IParameterValuePage{
    public void SetParamValue(string Value)
}

次に、ページでそれを実装し、コントロール ページのコードでチェックを行います。

  void OpenBtn1_Click(Object sender, EventArgs e){
      if (this.Page is IParameterValuePage){
          ((IParameterValuePage)this.Page).SetParamValue("Open");
      }
      else{
          throw new Exception("Page must implement IParameterValuePage");
      }
  }
于 2010-02-02T19:07:45.253 に答える