QA@IT
«回答へ戻る

一部訂正

1183
 以下のような感じです(あくまで感じなので、自分のコードに合わせて修正してください)
 
 
-```C#
+```csharp
 protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
 {
     if (e.Row.RowType == DataControlRowType.DataRow)

データソースコントロールが何だか分かりませんが、普通に SqlDataSource と GridView を組み合わせて使って、Visual Studio でデフォルト設定のままアプリを作っているとすれば、以下の手順でできると思います。

(1)「表示値」を表示する TextBox (Label ?)と「作業員」を表示する DropDownList を、両方とも、「表示列2」の ItemTemplate (EditItemTemplate ?) に配置。

(2) GridView の RowDataBound イベントのハンドラを作る。

(3) GridView の各データ行で、ハンドラの引数 GridViewRowEventArgs オブジェクトから「データ種別」を取得して、その値に応じて TextBox (Label ?) と DropDownList の Visible プロパティを適宜設定する。

以下のような感じです(あくまで感じなので、自分のコードに合わせて修正してください)

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        DataRowView dataRowView = (DataRowView)e.Row.DataItem;
        TextBox tb = (TextBox)e.Row.FindControl("TextBox1");
        DropDownList ddl = (DropDownList)e.Row.FindControl("DropDownList1");

        if (tb != null && ddl != null)
        {
            if ((int)dataRowView["データ種別"] == 2)
            {
                tb.Visible = true;
                ddl.Visible = false;
            }
            else
            {
                tb.Visible = false;
                ddl.Visible = true;
            }
        }
    }
}
データソースコントロールが何だか分かりませんが、普通に SqlDataSource と GridView を組み合わせて使って、Visual Studio でデフォルト設定のままアプリを作っているとすれば、以下の手順でできると思います。

(1)「表示値」を表示する TextBox (Label ?)と「作業員」を表示する DropDownList を、両方とも、「表示列2」の ItemTemplate (EditItemTemplate ?) に配置。

(2) GridView の RowDataBound イベントのハンドラを作る。

(3) GridView の各データ行で、ハンドラの引数 GridViewRowEventArgs オブジェクトから「データ種別」を取得して、その値に応じて TextBox (Label ?) と DropDownList の Visible プロパティを適宜設定する。

以下のような感じです(あくまで感じなので、自分のコードに合わせて修正してください)


```csharp
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        DataRowView dataRowView = (DataRowView)e.Row.DataItem;
        TextBox tb = (TextBox)e.Row.FindControl("TextBox1");
        DropDownList ddl = (DropDownList)e.Row.FindControl("DropDownList1");

        if (tb != null && ddl != null)
        {
            if ((int)dataRowView["データ種別"] == 2)
            {
                tb.Visible = true;
                ddl.Visible = false;
            }
            else
            {
                tb.Visible = false;
                ddl.Visible = true;
            }
        }
    }
}
```

誤字訂正

1183
 
 (2) GridView の RowDataBound イベントのハンドラを作る。
 
-(3) GridView の各データ行で、ハンドラの引数 GridViewRowEventArgs オブジェクトから「データ種別」を取得して、その値に応じて TextBox (Labal ?) と DropDownList の Visible プロパティを適宜設定する。
+(3) GridView の各データ行で、ハンドラの引数 GridViewRowEventArgs オブジェクトから「データ種別」を取得して、その値に応じて TextBox (Label ?) と DropDownList の Visible プロパティを適宜設定する。
 
 以下のような感じです(あくまで感じなので、自分のコードに合わせて修正してください)
 

データソースコントロールが何だか分かりませんが、普通に SqlDataSource と GridView を組み合わせて使って、Visual Studio でデフォルト設定のままアプリを作っているとすれば、以下の手順でできると思います。

(1)「表示値」を表示する TextBox (Label ?)と「作業員」を表示する DropDownList を、両方とも、「表示列2」の ItemTemplate (EditItemTemplate ?) に配置。

(2) GridView の RowDataBound イベントのハンドラを作る。

(3) GridView の各データ行で、ハンドラの引数 GridViewRowEventArgs オブジェクトから「データ種別」を取得して、その値に応じて TextBox (Label ?) と DropDownList の Visible プロパティを適宜設定する。

以下のような感じです(あくまで感じなので、自分のコードに合わせて修正してください)

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        DataRowView dataRowView = (DataRowView)e.Row.DataItem;
        TextBox tb = (TextBox)e.Row.FindControl("TextBox1");
        DropDownList ddl = (DropDownList)e.Row.FindControl("DropDownList1");

        if (tb != null && ddl != null)
        {
            if ((int)dataRowView["データ種別"] == 2)
            {
                tb.Visible = true;
                ddl.Visible = false;
            }
            else
            {
                tb.Visible = false;
                ddl.Visible = true;
            }
        }
    }
}
データソースコントロールが何だか分かりませんが、普通に SqlDataSource と GridView を組み合わせて使って、Visual Studio でデフォルト設定のままアプリを作っているとすれば、以下の手順でできると思います。

(1)「表示値」を表示する TextBox (Label ?)と「作業員」を表示する DropDownList を、両方とも、「表示列2」の ItemTemplate (EditItemTemplate ?) に配置。

(2) GridView の RowDataBound イベントのハンドラを作る。

(3) GridView の各データ行で、ハンドラの引数 GridViewRowEventArgs オブジェクトから「データ種別」を取得して、その値に応じて TextBox (Label ?) と DropDownList の Visible プロパティを適宜設定する。

以下のような感じです(あくまで感じなので、自分のコードに合わせて修正してください)


```C#
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        DataRowView dataRowView = (DataRowView)e.Row.DataItem;
        TextBox tb = (TextBox)e.Row.FindControl("TextBox1");
        DropDownList ddl = (DropDownList)e.Row.FindControl("DropDownList1");

        if (tb != null && ddl != null)
        {
            if ((int)dataRowView["データ種別"] == 2)
            {
                tb.Visible = true;
                ddl.Visible = false;
            }
            else
            {
                tb.Visible = false;
                ddl.Visible = true;
            }
        }
    }
}
```

回答を投稿

データソースコントロールが何だか分かりませんが、普通に SqlDataSource と GridView を組み合わせて使って、Visual Studio でデフォルト設定のままアプリを作っているとすれば、以下の手順でできると思います。

(1)「表示値」を表示する TextBox (Label ?)と「作業員」を表示する DropDownList を、両方とも、「表示列2」の ItemTemplate (EditItemTemplate ?) に配置。

(2) GridView の RowDataBound イベントのハンドラを作る。

(3) GridView の各データ行で、ハンドラの引数 GridViewRowEventArgs オブジェクトから「データ種別」を取得して、その値に応じて TextBox (Labal ?) と DropDownList の Visible プロパティを適宜設定する。

以下のような感じです(あくまで感じなので、自分のコードに合わせて修正してください)

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        DataRowView dataRowView = (DataRowView)e.Row.DataItem;
        TextBox tb = (TextBox)e.Row.FindControl("TextBox1");
        DropDownList ddl = (DropDownList)e.Row.FindControl("DropDownList1");

        if (tb != null && ddl != null)
        {
            if ((int)dataRowView["データ種別"] == 2)
            {
                tb.Visible = true;
                ddl.Visible = false;
            }
            else
            {
                tb.Visible = false;
                ddl.Visible = true;
            }
        }
    }
}
データソースコントロールが何だか分かりませんが、普通に SqlDataSource と GridView を組み合わせて使って、Visual Studio でデフォルト設定のままアプリを作っているとすれば、以下の手順でできると思います。

(1)「表示値」を表示する TextBox (Label ?)と「作業員」を表示する DropDownList を、両方とも、「表示列2」の ItemTemplate (EditItemTemplate ?) に配置。

(2) GridView の RowDataBound イベントのハンドラを作る。

(3) GridView の各データ行で、ハンドラの引数 GridViewRowEventArgs オブジェクトから「データ種別」を取得して、その値に応じて TextBox (Labal ?) と DropDownList の Visible プロパティを適宜設定する。

以下のような感じです(あくまで感じなので、自分のコードに合わせて修正してください)


```C#
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        DataRowView dataRowView = (DataRowView)e.Row.DataItem;
        TextBox tb = (TextBox)e.Row.FindControl("TextBox1");
        DropDownList ddl = (DropDownList)e.Row.FindControl("DropDownList1");

        if (tb != null && ddl != null)
        {
            if ((int)dataRowView["データ種別"] == 2)
            {
                tb.Visible = true;
                ddl.Visible = false;
            }
            else
            {
                tb.Visible = false;
                ddl.Visible = true;
            }
        }
    }
}
```