0

ユーザー ID を受け入れていますが、同じ ID を持つプロジェクト オーナーがいるかどうかを確認したいと考えています。プロジェクト所有者が存在する場合は、「下に移動」ボタンのみを有効にし、他のすべてのボタンを無効にする必要があります。管理者が存在する場合、最初に上に移動するボタンと最後に下に移動するボタン以外のすべてのボタンが有効になります。POwner が userID と同じ以外のすべてのボタンを無効にしたい ! (POwner が UserID と同じ場合のみ、下に移動ボタンを有効にする必要があります。

 public void Repeater1_ItemDatabound(Object Sender, RepeaterItemEventArgs e)
    {

        if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
        {
            String userID = User.Identity.Name.Split('\\')[1];
            if (setvisibility(userID) == true) //Check if the person is Admin all buttons work 
            {

                if (e.Item.ItemIndex == 0)
                {
                    Button b = e.Item.FindControl("btnmoveup") as Button;
                    b.Enabled = false;
                }

                DataView view = (DataView)SqlDataSource1.Select(DataSourceSelectArguments.Empty);
                DataTable result = view.ToTable();
                if (e.Item.ItemIndex == (result.Rows.Count) - 1)
                {
                    Button b2 = e.Item.FindControl("btnmovedown") as Button;
                    b2.Enabled = false;
                }

            }
            else // Check if Project Owner (POwner exists) Check if userID exists in POwner
            {
                using (SqlConnection connection = new SqlConnection(WebConfigurationManager.ConnectionStrings["ctd_priority_dbConnectionString"].ConnectionString))
                {
                    connection.Open();
                    SqlCommand cmd = new SqlCommand("Select POwner from Projects WHERE POwner = @userid", connection);
                    cmd.Parameters.AddWithValue("@userid", userID);
                    SqlDataReader reader = cmd.ExecuteReader();
4

2 に答える 2

0

2 つの可能な役割の (ローカル) ブール変数を作成します。

bool isAdmin;
bool isProjectOwner;

ボタンを有効/無効にするに、それらの値を決定します。

isAdmin = setvisibility(userID);
//isProjectOwner // create a similar method to setvisibility() for your project owner

ユーザーのロール状態を割り当てるか無効にするだけで、ボタンの表示を切り替えることができるようになりました

...
if (e.Item.ItemIndex == 0)
{
    Button b = e.Item.FindControl("btnmoveup") as Button;
    // IS NOT admin AND IS project owner will set .Enabled = true
    b.Enabled = (!isAdmin && isProjectOwner);
}
于 2012-06-28T13:46:12.517 に答える
0

リピーター アイテム テンプレート内のすべてのボタンを無効にする場合は、コントロールを無効にするポイントでこのメソッドを呼び出してみてください。

private static void DisableButtonControls(RepeaterItemEventArgs e)
    {
        foreach (Control control in e.Item.Controls)
        {
            if (control is Button)
            {
                control.Visible = false;
            }
        }
    }

すべてのボタンが無効になった後に下ボタンを有効にするには、次のようにします。

Button downButton = e.FindControl("btnmovedown") as Button;
if (downButton != null)
{
    downButton.Visible = false;
}

経験則として、「as」キーワードを使用して型を変換するときはいつでも、返されたオブジェクトが null でないことを確認してから使用することをお勧めします。

于 2012-06-28T13:54:53.793 に答える