2016-04-11 1 views
1

私は自分のSQLプロジェクトに取り組んでいます。テーブルの列に従ってgridviewフッターの値をバインドしたgridviewを作成しました。テーブルの列とテーブルで囲まれたgridviewフッターを表示する方法は空ですか? ASP.NET C#

基本的には、ユーザーが値を挿入してテーブルを作成するグリッドビューを作成しています。しかし、テーブルに 'One'レコードまたは複数のレコードが含まれているときに問題に直面していますが、それはうまくいきますが、テーブルが空の場合は、「textboxes」、「checkboxes」および「dropdownlist "

表に1つのレコード、このGridViewのショーが含まれている場合、それがうまく働いているが、ここで

image

あるテーブルにデータが含まれていないし、このGridViewのショー

image

どのようにすることができますこのタイプのグリッドビューを表示する

image

テーブルにデータがない場合、ユーザーは値を挿入してテーブルを作成しますか?ここで

は私のASPXマークアップである:ここで

<asp:GridView ID="GridView1" runat="server" ShowHeaderWhenEmpty="True" 
    AutoGenerateColumns="False" BackColor="#DEBA84" 
    BorderColor="#DEBA84" BorderStyle="None" BorderWidth="1px" CellPadding="3" CellSpacing="2" 
    ShowFooter="True" Style="margin-left: 136px; margin-top: 72px; 
    margin-right: 0px;" Height="16px" Width="685px" 
    DataSourceID="sql"> 
    <Columns> 
     <asp:TemplateField HeaderText="Column_Name" SortExpression="Column_Name"> 
      <EditItemTemplate> 
       <asp:TextBox ID="txtName" runat="server" Text='<%# Bind("Column_Name") %>'></asp:TextBox> 
       <asp:RequiredFieldValidator Text="*" ID="colname" ControlToValidate="txtName" 
        runat="server" ErrorMessage="Column Name is Required" ForeColor="Red"> 
       </asp:RequiredFieldValidator> 
      </EditItemTemplate> 
      <ItemTemplate> 
       <asp:Label ID="Label1" runat="server" Text='<%# Bind("Column_Name") %>'></asp:Label> 
      </ItemTemplate> 
      <FooterTemplate> 
       <asp:TextBox ID="txtColName" runat="server"></asp:TextBox> 
       <asp:RequiredFieldValidator ValidationGroup="INSERT" Text="*" ID="insertcolname" ControlToValidate="txtColName" 
        runat="server" ErrorMessage="Column Name is Required" ForeColor="Red"> 
       </asp:RequiredFieldValidator> 
      </FooterTemplate> 
     </asp:TemplateField> 
     <asp:TemplateField HeaderText="Data_Type" SortExpression="Data_Type"> 
      <EditItemTemplate> 
       <asp:DropDownList ID="DropDownList1" runat="server" SelectedValue='<%# Bind("Data_Type") %>'> 
        <asp:ListItem>Select Datatype</asp:ListItem> 
        <asp:ListItem>int</asp:ListItem> 
        <asp:ListItem>Float</asp:ListItem> 
        <asp:ListItem>Varchar(50)</asp:ListItem> 
        <asp:ListItem>Varchar(100)</asp:ListItem> 
        <asp:ListItem>double</asp:ListItem> 
       </asp:DropDownList> 
       <asp:RequiredFieldValidator ID="datatype" ControlToValidate="DropDownList1" 
        runat="server" ErrorMessage="Data Type is Required" ForeColor="Red" InitialValue="Select Datatype"> 
       </asp:RequiredFieldValidator> 
      </EditItemTemplate> 
      <ItemTemplate> 
       <asp:Label ID="Label2" runat="server" Text='<%# Bind("Data_Type") %>'></asp:Label> 
      </ItemTemplate> 
      <FooterTemplate> 
       <asp:DropDownList ID="DropDownList2" runat="server"> 
        <asp:ListItem>Select Datatype</asp:ListItem> 
        <asp:ListItem>int</asp:ListItem> 
        <asp:ListItem>Float</asp:ListItem> 
        <asp:ListItem>Varchar(50)</asp:ListItem> 
        <asp:ListItem>Varchar(100)</asp:ListItem> 
        <asp:ListItem>double</asp:ListItem> 
       </asp:DropDownList> 
       <asp:RequiredFieldValidator ValidationGroup="INSERT" Text="*" ID="datatype" ControlToValidate="DropDownList2" 
        runat="server" ErrorMessage="Data Type is Required" ForeColor="Red" InitialValue="Select Datatype"> 
       </asp:RequiredFieldValidator> 
      </FooterTemplate> 
     </asp:TemplateField> 
     <asp:TemplateField HeaderText="Allow_Null_" SortExpression="Allow_Null_"> 
           <EditItemTemplate> 
            <asp:CheckBox ID="CheckBox1" runat="server" Checked='<%#Convert.ToBoolean(DataBinder.Eval(Container.DataItem,"Allow_Null_")) %>'/> 
           </EditItemTemplate> 
           <ItemTemplate> 
            <asp:CheckBox ID="CheckBox1" runat="server" Checked='<%# Convert.ToBoolean(DataBinder.Eval(Container.DataItem,"Allow_Null_"))%>' enabled="false" /> 
           </ItemTemplate> 
           <FooterTemplate> 
            <asp:CheckBox ID="nulll" runat="server" /> 
           </FooterTemplate> 
          </asp:TemplateField> 
          <asp:TemplateField HeaderText="Primary_Key_" SortExpression="Primary_Key_"> 
           <EditItemTemplate> 
            <asp:CheckBox ID="CheckBox2" runat="server" Checked='<%# Convert.ToBoolean(DataBinder.Eval(Container.DataItem,"Primary_Key_")) %>' /> 
           </EditItemTemplate> 
           <ItemTemplate> 
            <asp:CheckBox ID="CheckBox2" runat="server" 
             Checked='<%#Convert.ToBoolean(DataBinder.Eval(Container.DataItem,"Primary_Key_")) %>' Enabled="false" /> 
           </ItemTemplate> 
           <FooterTemplate> 
            <asp:CheckBox ID="primary" runat="server" /> 
           </FooterTemplate> 
          </asp:TemplateField> 

     <asp:CommandField ShowEditButton="True" /> 
     <asp:CommandField ShowDeleteButton="True" /> 

     <asp:TemplateField HeaderText="Insert"> 
     <FooterTemplate> 


      <asp:LinkButton ValidationGroup="INSERT" ID="LinkButton1" runat="server" OnClick="lbinssert">INSERT</asp:LinkButton> 
      </FooterTemplate> 
     </asp:TemplateField> 


    </Columns> 
    <FooterStyle BackColor="#F7DFB5" ForeColor="#8C4510" /> 
    <HeaderStyle BackColor="#A55129" Font-Bold="True" ForeColor="White" /> 
    <PagerStyle ForeColor="#8C4510" HorizontalAlign="Center" /> 
    <RowStyle BackColor="#FFF7E7" ForeColor="#8C4510" /> 
    <SelectedRowStyle BackColor="#738A9C" Font-Bold="True" ForeColor="White" /> 
    <SortedAscendingCellStyle BackColor="#FFF1D4" /> 
    <SortedAscendingHeaderStyle BackColor="#B95C30" /> 
    <SortedDescendingCellStyle BackColor="#F1E5CE" /> 
    <SortedDescendingHeaderStyle BackColor="#93451F" /> 
     </asp:GridView> 

<asp:ValidationSummary ValidationGroup="INSERT" ID="ValidationSummary1" ForeColor="Red" 
    runat="server" Height="25px" style="margin-left: 140px" /> 
    <br /> 
<input type="submit" style="position:relative; width:30px; left:452px; top: 0px; width: 86px;" 
    value="Create table" name="create"/> 
<asp:ValidationSummary ID="ValidationSummary2" ForeColor="Red" runat="server" 
    style="margin-left: 142px" /> 
    <asp:SqlDataSource ID="sql" runat="server" 
    ConnectionString="<%$ ConnectionStrings:db_compilerConnectionString %>" 

    SelectCommand="SELECT [Column_Name], [Data_Type], [Allow_Null_], [Primary_Key_], [Date] FROM [tbl_field]" 
    DeleteCommand="DELETE FROM [tbl_field] WHERE [Field_id][email protected]" InsertCommand="INSERT INTO [tbl_field] ([Column_Name],[Data_Type],[Database_id],[Allow_Null_],[Primary_Key_])Values (@ColumnName,@Dtype,@id,@null,@primary)" 
    UpdateCommand="UPDATE [tbl_field] SET [Column_Name][email protected],[Data_Type][email protected],[Database_id][email protected],[Allow_Null_][email protected],[Primary_Key_][email protected]"> 
    <DeleteParameters> 
    <asp:Parameter Name="field" Type="Int32" /> 
    </DeleteParameters> 
    <InsertParameters> 
    <asp:Parameter Name="ColumnName" Type="String" /> 
     <asp:Parameter Name="Dtype" Type="String" /> 
     <asp:Parameter Name="id" Type="String" /> 
     <asp:Parameter Name="null" Type="Boolean" /> 
     <asp:Parameter Name="primary" Type="Boolean" /> 


    </InsertParameters> 
    <UpdateParameters> 
     <asp:Parameter Name="ColumnName" Type="String" /> 
     <asp:Parameter Name="Dtype" Type="String" /> 
     <asp:Parameter Name="id" Type="String" /> 
     <asp:Parameter Name="null" Type="Boolean"/> 
     <asp:Parameter Name="primary" Type="Boolean" /> 

    </UpdateParameters> 

</asp:SqlDataSource> 

は私のaspx.csコードである:

public void lbinssert(Object sender,EventArgs e) 
{ 
    sql.InsertParameters["ColumnName"].DefaultValue = 
     ((TextBox)GridView1.FooterRow.FindControl("txtColName")).Text; 
    sql.InsertParameters["Dtype"].DefaultValue = 
     ((DropDownList)GridView1.FooterRow.FindControl("DropDownList2")).Text; 
    sql.InsertParameters["id"].DefaultValue = 
     ((DropDownList)GridView1.FooterRow.FindControl("DropDownList2")).Text; 
    sql.InsertParameters["null"].DefaultValue = 
     ((CheckBox)GridView1.FooterRow.FindControl("nulll")).Checked == true ? "true" : "false"; 
    sql.InsertParameters["primary"].DefaultValue = ((CheckBox)GridView1.FooterRow.FindControl("primary")).Checked == true ? "true" : "false"; 

    sql.Insert(); 
    } 

答えて

0

私は、次の解決策を示唆している:

がDataTableのあなたことを考慮し返品には、dataTable.Rows.Count == 0をテストしてゼロレコードが含まれます。

のdataTable上記ゼロレコードを返すときに以下のコードの部分を実行します

if(dataTable.Rows.Count == 0) 
{ 
    FixGridFooter(dataTable); 
} 
else 
{ 
    GridView1.DataSource = datatable; 
    GridView1.DataBind(); 
} 

の方法は、GridViewのにバインドされ、フッタに表示次いでデータテーブルとにダミーレコードを追加します。

private void FixGridFooter(DataTable dataSource) 
{ 
    //add blank row to the the resultset 
    dataSource.Rows.Add(dataSource.NewRow()); 
    dataSource.Rows[0]["Value1"] = 0; 
    dataSource.Rows[0]["Value2"] = ""; 
    dataSource.Rows[0]["RecordDate"] = DateTime.Now.ToString("dd MMM yyyy"); 
    dataSource.Rows[0]["Checked"] = false; 
    GridView1.DataSource = dataSource; 
    GridView1.DataBind(); 

    //hide empty row - if you want to display it on an event like a button click else it will display as per default. 
    GridView1.Rows[0].Visible = false; 
} 

新しいレコードの挿入は、<asp:TemplateField>内部FooterTemplateを経由して発生します。

あなたはイベントがあるとき、またはロードイベントでGridView1.ShowFooter = true;と呼ぶことができます。データテーブルが最終的にレコードを返すとき、ShowFooterは再び不可視に設定できます。

これは非常に迅速かつ汚れた解決策です。明らかに多くの最適化を行うことができますが、私はあなたよりも残します。

フッターのサンプルでは、​​CommandName="Insert"のボタン挿入になります。 RowCommandイベントでは、コマンド名をテストし、その後、あなたがデザイナーのプロパティで標準GridView設定を経由して追加し、それに応じて機能を追加することができ、インサート

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) 
     { 
      try 
      { 
       if (e.CommandName.Equals("Insert") 
       { 
        //insert code 
        var returnString = GridView1.FooterRow.FindControl("txtValue") as TextBox; 
        GridView1.ShowFooter = false; 
       } 
} 

UpdateDeleteの行から値を取得します。

+0

おかげで、私は – Saira

+0

をチェックしてみましょう。しかし、私は、GridViewののフッターを使用して値を挿入したい、しかし、あなたは私のGridViewに追加されたフィールドを含む溶液を提供するが、私は挿入したいです、編集、データバインドテーブルでデータを削除する – Saira

+0

あなたはそうだけど、問題はテーブルが空でないたびに発生します。私のテーブルには "userid"が含まれています。テーブルにはdaが含まれますユーザーが新しいテーブルを作成した後、このグリッドビューを表示すると、ユーザーはテーブルを作成できます – Saira

関連する問題