BoundColumn.ReadOnly プロパティ

BoundColumn 内の項目を編集できるかどうかを示す値を取得または設定します。

Public Overridable Property ReadOnly As Boolean
[C#]
public virtual bool ReadOnly {get; set;}
[C++]
public: __property virtual bool get_ReadOnly();public: __property virtual void set_ReadOnly(bool);
[JScript]
public function get ReadOnly() : Boolean;public function set ReadOnly(Boolean);

プロパティ値

BoundColumn の項目を編集できない場合は true 。それ以外の場合は false 。既定値は false です。

解説

ReadOnly プロパティを使用して、 BoundColumn 内の項目を編集できるかどうかを指定します。このプロパティは、この列が読み取り専用かどうかをプログラムにより確認するときにも使用します。

使用例

[Visual Basic, C#] ReadOnly プロパティを使用して、 BoundColumn を読み取り専用に指定する方法の例を次に示します。

 

<%@ Page Language="VB" AutoEventWireup="True" %>
<%@ Import Namespace="System.Data" %>
 
<html>
   <script runat="server">
 
      ' The Cart and CartView objects temporarily store the data source 
      ' for the DataGrid control while the page is being processed.
      Dim Cart As DataTable = New DataTable()
      Dim CartView As DataView   
 
      Sub Page_Load(sender as Object, e As EventArgs) 
 
         ' With a database, use a select query to retrieve the data. 
         ' Because the data source in this example is an in-memory 
         ' DataTable, retrieve the data from session state if it exists; 
         ' otherwise, create the data source.
         GetSource()

         ' The DataGrid control maintains state between posts to the 
         ' server; therefore it only needs to be bound to a data source 
         ' the first time the page is loaded or when the data source 
         ' is updated.
         If Not IsPostBack Then

            BindGrid()

         End If
                   
      End Sub
 
      Sub ItemsGrid_Edit(sender As Object, e As DataGridCommandEventArgs) 

         ' Set the EditItemIndex property to the index of the item 
         ' clicked in the DataGrid control to enable editing for that
         ' item. Be sure to rebind the DateGrid to the data source 
         ' to refresh the control.
         ItemsGrid.EditItemIndex = e.Item.ItemIndex
         BindGrid()

      End Sub
 
      Sub ItemsGrid_Cancel(sender As Object, e As DataGridCommandEventArgs) 

         ' Set the EditItemIndex property to -1 to exit editing mode.  
         ' Be sure to rebind the DateGrid to the data source to 
         ' refresh the control.
         ItemsGrid.EditItemIndex = -1
         BindGrid()

      End Sub
 
      Sub ItemsGrid_Update(sender As Object, e As DataGridCommandEventArgs) 

         ' Retrieve the text boxes that contain the values to update.
         ' For bound columns, the edited value is stored in a TextBox.
         ' The TextBox is the 0th control in a cell's Controls collection.
         ' Each cell in the Cells collection of a DataGrid item represents
         ' a column in the DataGrid control.
         Dim qtyText As TextBox = CType(e.Item.Cells(2).Controls(0), TextBox)
         Dim priceText As TextBox = CType(e.Item.Cells(3).Controls(0), TextBox)
 
         ' Retrieve the updated values.
         Dim item As String = e.Item.Cells(1).Text
         Dim qty As String = qtyText.Text
         Dim price As String = priceText.Text
        
         Dim dr As DataRow
 
         ' With a database, use an update command to update the data. Because 
         ' the data source in this example is an in-memory DataTable, delete 
         ' the old row and replace it with a new one.
 
         ' Remove the old entry and clear the row filter.
         CartView.RowFilter = "Item='" & item & "'"
         If CartView.Count > 0 Then
         
            CartView.Delete(0)
         
         End If

         CartView.RowFilter = ""
 
         ' Add the new entry.
         dr = Cart.NewRow()
         dr(0) = qty
         dr(1) = item
         dr(2) = price
         Cart.Rows.Add(dr)
 
         ' Set the EditItemIndex property to -1 to exit editing mode. 
         ' Be sure to rebind the DateGrid to the data source to refresh
         ' the control.
         ItemsGrid.EditItemIndex = -1
         BindGrid()

      End Sub
 
      Sub BindGrid() 
      
         ' Set the data source and bind to the Data Grid control.
         ItemsGrid.DataSource = CartView
         ItemsGrid.DataBind()

      End Sub

      Sub GetSource()

         ' For this example, the data source will be a DataTable that is
         ' stored in session state.
         ' If the data source does not exist, create it; otherwise, 
         ' load the data.
         If Session("ShoppingCart") Is Nothing Then 

            ' Create the sample data.
            Dim dr As DataRow  
 
            ' Define the columns of the table.
            Cart.Columns.Add(New DataColumn("Qty", GetType(String)))
            Cart.Columns.Add(New DataColumn("Item", GetType(String)))
            Cart.Columns.Add(New DataColumn("Price", GetType(String)))

            ' Store the table in session state to persist its values 
            ' between posts to the server.
            Session("ShoppingCart") = Cart
             
            ' Populate the DataTable with sample data.
            Dim i As Integer

            For i = 1 to 4 
          
               dr = Cart.NewRow()
               If (i Mod 2) <> 0 Then
                  dr(0) = "2"
               Else
                  dr(0) = "1"
               End If
               dr(1) = "Item " & i.ToString()
               dr(2) = (1.23 * (i + 1)).ToString()
               Cart.Rows.Add(dr)

            Next

         Else

            ' Retrieve the sample data from session state.
            Cart = CType(Session("ShoppingCart"), DataTable)

         End If         
 
         ' Create a DataView and specify the field to sort by.
         CartView = New DataView(Cart)
         CartView.Sort="Item"

         Return

      End Sub
 
   </script>
 
<body>
 
   <form runat="server">

      <h3>BoundColumn ReadOnly Example</h3>
 
      <asp:DataGrid id="ItemsGrid"
           BorderColor="black"
           BorderWidth="1"
           CellPadding="3"
           OnEditCommand="ItemsGrid_Edit"
           OnCancelCommand="ItemsGrid_Cancel"
           OnUpdateCommand="ItemsGrid_Update"
           AutoGenerateColumns="false"
           runat="server">

         <HeaderStyle BackColor="#aaaadd">
         </HeaderStyle>
 
         <Columns>

            <asp:EditCommandColumn
                 EditText="Edit"
                 CancelText="Cancel"
                 UpdateText="Update" 
                 HeaderText="Edit Command Column">

               <ItemStyle Wrap="False">
               </ItemStyle>

               <HeaderStyle Wrap="False">
               </HeaderStyle>

            </asp:EditCommandColumn>            
 
            <asp:BoundColumn HeaderText="Item" 
                 ReadOnly="True" 
                 DataField="Item"/>
 
            <asp:BoundColumn HeaderText="Quantity" 
                 DataField="Qty"/>
 
            <asp:BoundColumn HeaderText="Price" 
                 DataField="Price"/>
 
         </Columns>
 
      </asp:DataGrid>

   </form>
 
</body>
</html>


[C#] 

<%@ Page Language="C#" AutoEventWireup="True" %>
<%@ Import Namespace="System.Data" %>
 
<html>
   <script runat="server">
 
      // The Cart and CartView objects temporarily store the data source
      // for the DataGrid control while the page is being processed.
      DataTable Cart = new DataTable();
      DataView CartView;   
 
      void Page_Load(Object sender, EventArgs e) 
      {
 
         // With a database, use a select query to retrieve the data. 
         // Because the data source in this example is an in-memory 
         // DataTable, retrieve the data from session state if it exists; 
         // otherwise, create the data source.
         GetSource();

         // The DataGrid control maintains state between posts to the 
         // server; therefore it only needs to be bound to a data source 
         // the first time the page is loaded or when the data source 
         // is updated.
         if (!IsPostBack)
         {

            BindGrid();

         }
                   
      }
 
      void ItemsGrid_Edit(Object sender, DataGridCommandEventArgs e) 
      {

         // Set the EditItemIndex property to the index of the item 
         // clicked in the DataGrid control to enable editing for that
         // item. Be sure to rebind the DateGrid to the data source 
         // to refresh the control.
         ItemsGrid.EditItemIndex = e.Item.ItemIndex;
         BindGrid();

      }
 
      void ItemsGrid_Cancel(Object sender, DataGridCommandEventArgs e) 
      {

         // Set the EditItemIndex property to -1 to exit editing mode.  
         // Be sure to rebind the DateGrid to the data source to 
         // refresh the control.
         ItemsGrid.EditItemIndex = -1;
         BindGrid();

      }
 
      void ItemsGrid_Update(Object sender, DataGridCommandEventArgs e) 
      {

         // Retrieve the text boxes that contain the values to update.
         // For bound columns, the edited value is stored in a TextBox.
         // The TextBox is the 0th control in a cell's Controls collection.
         // Each cell in the Cells collection of a DataGrid item represents
         // a column in the DataGrid control.
         TextBox qtyText = (TextBox)e.Item.Cells[2].Controls[0];
         TextBox priceText = (TextBox)e.Item.Cells[3].Controls[0];
 
         // Retrieve the updated values.
         String item = e.Item.Cells[1].Text;
         String qty = qtyText.Text;
         String price = priceText.Text;
        
         DataRow dr;
 
         // With a database, use an update command to update the data. Because 
         // the data source in this example is an in-memory DataTable, delete  
         // the old row and replace it with a new one.
 
         // Remove the old entry and clear the row filter.
         CartView.RowFilter = "Item='" + item + "'";
         if (CartView.Count > 0)
         {
            CartView.Delete(0);
         }
         CartView.RowFilter = "";
 
         // Add the new entry.
         dr = Cart.NewRow();
         dr[0] = qty;
         dr[1] = item;
         dr[2] = price;
         Cart.Rows.Add(dr);
 
         // Set the EditItemIndex property to -1 to exit editing mode.  
         // Be sure to rebind the DateGrid to the data source to refresh
         // the control.
         ItemsGrid.EditItemIndex = -1;
         BindGrid();

      }
 
      void BindGrid() 
      {

         // Set the data source and bind to the Data Grid control.
         ItemsGrid.DataSource = CartView;
         ItemsGrid.DataBind();

      }

      void GetSource()
      {

         // For this example, the data source is a DataTable that is 
         // stored in session state.
         // If the data source does not exist, create it; otherwise, 
         // load the data.
         if (Session["ShoppingCart"] == null) 
         {     

            // Create the sample data.
            DataRow dr;  
 
            // Define the columns of the table.
            Cart.Columns.Add(new DataColumn("Qty", typeof(String)));
            Cart.Columns.Add(new DataColumn("Item", typeof(String)));
            Cart.Columns.Add(new DataColumn("Price", typeof(String)));

            // Store the table in session state to persist its values 
            // between posts to the server.
            Session["ShoppingCart"] = Cart;
             
            // Populate the DataTable with sample data.
            for (int i = 1; i <= 4; i++) 
            {
               dr = Cart.NewRow();
               if (i % 2 != 0)
               {
                  dr[0] = "2";
               }
               else
               {
                  dr[0] = "1";
               }
               dr[1] = "Item " + i.ToString();
               dr[2] = (1.23 * (i + 1)).ToString();
               Cart.Rows.Add(dr);
            }

         } 

         else
         {

            // Retrieve the sample data from session state.
            Cart = (DataTable)Session["ShoppingCart"];

         }         
 
         // Create a DataView and specify the field to sort by.
         CartView = new DataView(Cart);
         CartView.Sort="Item";

         return;

      }
 
   </script>
 
<body>
 
   <form runat="server">

      <h3>BoundColumn ReadOnly Example</h3>
 
      <asp:DataGrid id="ItemsGrid"
           BorderColor="black"
           BorderWidth="1"
           CellPadding="3"
           OnEditCommand="ItemsGrid_Edit"
           OnCancelCommand="ItemsGrid_Cancel"
           OnUpdateCommand="ItemsGrid_Update"
           AutoGenerateColumns="false"
           runat="server">

         <HeaderStyle BackColor="#aaaadd">
         </HeaderStyle>
 
         <Columns>

            <asp:EditCommandColumn
                 EditText="Edit"
                 CancelText="Cancel"
                 UpdateText="Update" 
                 HeaderText="Edit Command Column">

               <ItemStyle Wrap="False">
               </ItemStyle>

               <HeaderStyle Wrap="False">
               </HeaderStyle>

            </asp:EditCommandColumn>            
 
            <asp:BoundColumn HeaderText="Item" 
                 ReadOnly="True" 
                 DataField="Item"/>
 
            <asp:BoundColumn HeaderText="Quantity" 
                 DataField="Qty"/>
 
            <asp:BoundColumn HeaderText="Price" 
                 DataField="Price"/>
 
         </Columns>
 
      </asp:DataGrid>

   </form>
 
</body>
</html>

[C++, JScript] C++ および JScript のサンプルはありません。Visual Basic および C# のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

プラットフォーム: Windows 2000, Windows XP Professional, Windows Server 2003 ファミリ

参照

BoundColumn クラス | BoundColumn メンバ | System.Web.UI.WebControls 名前空間