- PR -

GridView コントロールなどの編集について

1
投稿者投稿内容
SL
大ベテラン
会議室デビュー日: 2008/05/02
投稿数: 183
投稿日時: 2008-05-09 15:50
お世話になります。

たとえば、GridView コントロールを使用してデータベースよりデータを表示していて
これを修正・編集しようとするとき DropDownList, Calendar などのコントロールを使用して必要なデータを入力・変更することってできますか?
もちろん新規の時もカレンダーコントロールで入力できれば日付のフォーマットが正しいかどうかのチェックも省けると思うのですが、こういったとこは可能ですか?
また、どうやって行うのでしょうか教えてください。
SL
大ベテラン
会議室デビュー日: 2008/05/02
投稿数: 183
投稿日時: 2008-05-09 18:46
お世話になります。

GridView のタスクメニュで項目を TemplateField にセットしテンプレートの編集モードで ItemTemplate にすればそのセル内にコントロールなど配置できるようですが、
これでは、表示状態でコントロールを表示して、「編集」をクリックしたときにそのコントロールが消えます。これを逆に表示でコントロールを消して編集でコントロールを表示することは出来ますか?
教えてください。
RapidExpress
常連さん
会議室デビュー日: 2007/11/11
投稿数: 42
お住まい・勤務地: おおさか
投稿日時: 2008-05-09 18:55
編集時に出したいのであればItemTemplateに置いてはいけません。
EditItemTemplateに置けば出るはずです。
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2008-05-09 19:12
引用:

SLさんの書き込み (2008-05-09 15:50) より:

もちろん新規の時もカレンダーコントロールで入力できれば日付のフォーマットが正しいかどうかのチェックも省けると思うのですが、こういったとこは可能ですか?


HTTPをインフラとして使用する以上どうとでも書き換えが可能なので、カレンダーコントロールを使ったとしてもフォーマットのチェックは省いてはいけません。
_________________
かるあ のメモスニペット
SL
大ベテラン
会議室デビュー日: 2008/05/02
投稿数: 183
投稿日時: 2008-05-09 21:14
お世話になります。

EditItemTemplate に変更することでできました。日付もチェックするようにします。
ですが、下記の編集が始まる時に呼ばれるハンドラで、そのコントロールをテンプレートに追加した部分のデータが取得できません。どのようにしたら取得できますか?
よろしくお願いします。


protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
// int index = GridView1.EditIndex;
int index = e.NewEditIndex;
if (index > -1)
{
GridViewRow row = GridView1.Rows[index];

string a = row.Cells[1].Text;
string v = row.Cells[2].Text;
string c = row.Cells[3].Text;
string z = row.Cells[4].Text;
   string x = row.Cells[5].Text;
   string w = row.Cells[6].Text;
Access
ぬし
会議室デビュー日: 2002/04/08
投稿数: 829
投稿日時: 2008-05-10 07:51
引用:

EditItemTemplate に変更することでできました。日付もチェックするようにします。
ですが、下記の編集が始まる時に呼ばれるハンドラで、そのコントロールをテンプレートに追加した部分のデータが取得できません。どのようにしたら取得できますか?
よろしくお願いします。


Findcontrolを使用すれば可能です。

余談ですが、GridViewの編集機能を利用すればコードレスで可能ですよ!

詳細は下記リンクを参照してください。
http://msdn.microsoft.com/en-us/library/ms972948.aspx

コード:
  <asp:GridView ID="GridView1" runat="server" DataSourceID="productsDataSource" DataKeyNames="ProductID"
    AutoGenerateColumns="False" AllowPaging="True" BorderWidth="1px" BackColor="White"
    CellPadding="3" BorderStyle="None" BorderColor="#CCCCCC">
    <FooterStyle ForeColor="#000066" BackColor="White"></FooterStyle>
    <PagerStyle ForeColor="#000066" HorizontalAlign="Left" BackColor="White"></PagerStyle>
    <HeaderStyle ForeColor="White" Font-Bold="True" BackColor="#006699"></HeaderStyle>
    <Columns>
      <asp:CommandField ShowEditButton="True"></asp:CommandField>
      <asp:BoundField ReadOnly="True" HeaderText="ProductID" InsertVisible="False" DataField="ProductID"
        SortExpression="ProductID">
        <ItemStyle HorizontalAlign="Center"></ItemStyle>
      </asp:BoundField>
      <asp:BoundField HeaderText="ProductName" DataField="ProductName" SortExpression="ProductName">
      </asp:BoundField>
      <asp:TemplateField SortExpression="CategoryName" HeaderText="CategoryName">
        <EditItemTemplate>
          <asp:DropDownList ID="DropDownList1" runat="server" DataSourceID="categoryDataSource"
            DataTextField="CategoryName" DataValueField="CategoryID" 
            SelectedValue='<%# Bind("CategoryID") %>'>
          </asp:DropDownList>
        </EditItemTemplate>
        <ItemTemplate>
          <asp:Label runat="server" Text='<%# Bind("CategoryName") %>' ID="Label1"></asp:Label>
        </ItemTemplate>
      </asp:TemplateField>
    </Columns>
    <SelectedRowStyle ForeColor="White" Font-Bold="True" BackColor="#669999"></SelectedRowStyle>
    <RowStyle ForeColor="#000066"></RowStyle>
  </asp:GridView>






_________________
ASP.NET+Ajaxサンプル集 | JavaScript+Ajaxサンプル集
SL
大ベテラン
会議室デビュー日: 2008/05/02
投稿数: 183
投稿日時: 2008-05-10 21:42
お世話になります。

まだ、Webアプリを作り始めて間がないのでコントロールがどこまで面倒みてくれるのかがよくわかりませんでした。
余計なコード部分は、削除しデータソースを設定しDataBaindings を設定することでうまくいっているようです。もう少し調べます。
1

スキルアップ/キャリアアップ(JOB@IT)