views:

121

answers:

2

I am developing a C# VS 2008 / SQL Server 2008 website. I have a Gridview. I included the Default.aspx and aspx.cs files below. But when I build this I get the below error:

The Type '_Default' already contains a definition for 'btnOWrite'

What do I need to do to fix this? I am not getting any errors now; just that this grid does not show up. Thanks!

ASPX file:

<%@ Page Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" Title="Untitled Page" %>

<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="Server">
    <asp:Panel runat="server" ID="AuthenticatedMessagePanel">
        <asp:Label runat="server" ID="WelcomeBackMessage"></asp:Label>
        <table>
            <tr>
                <td>
                    <asp:Label ID="tableLabel" runat="server" Font-Bold="True" Text="Select target table:"></asp:Label>
                </td>
                <td>
                    <asp:Label ID="inputLabel" runat="server" Font-Bold="True" Text="Select input file:"></asp:Label>
                </td>
            </tr>
            <tr>
                <td valign="top">
                    <asp:Label ID="feedbackLabel" runat="server"></asp:Label>
                    <asp:SqlDataSource ID="SelectTables" runat="server" ConnectionString="<%$ ConnectionStrings:AdventureWorks3_SelectTables %>"
                        SelectCommand="getTableNames" SelectCommandType="StoredProcedure">
                        <SelectParameters>
                            <asp:QueryStringParameter DefaultValue="Person" Name="SchemaName" QueryStringField="SchemaName"
                                Type="String" />
                        </SelectParameters>
                    </asp:SqlDataSource>
                    <asp:GridView ID="GridView1" DataSourceID="SelectTables" runat="server" Style="width: 400px;"
                        CellPadding="4" ForeColor="#333333" GridLines="None" OnSelectedIndexChanged="GridView1_SelectedIndexChanged"
                        AutoGenerateSelectButton="True" DataKeyNames="TABLE_NAME">
                        <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
                        <Columns>
                            <asp:BoundField HeaderText="TABLE_NAME" DataField="TABLE_NAME" />
                        </Columns>
                        <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
                        <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
                        <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
                        <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
                        <EditRowStyle BackColor="#999999" />
                        <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
                    </asp:GridView>
                </td>
                <td valign="top">
                    <input id="uploadFile" type="file" size="26" runat="server" name="uploadFile" title="UploadFile" class="greybar" enableviewstate="True" />
                </td>
            </tr>
        </table>

        <table>
<tr>
<td style="width:150px; height:50px"></td>
<td valign="bottom" style="width:150px; height:50px">
     <input id="btnOWrite" type="submit" value="Overwrite Data" runat="server" class="greybar"
                      onserverclick="btnOWrite_Click" name="btnOWrite" />&nbsp;
                      </td>
<td style="width:100px"></td>

<td valign="bottom" style="width:150px; height:50px">
    <input id="btnAppend" type="submit" value="Append Data" runat="server" class="greybar" onserverclick="btnAppend_Click" name="btnAppend" /> 
</td>
</tr>
</table>

    </asp:Panel>
    <asp:Panel runat="Server" ID="AnonymousMessagePanel">
        <asp:HyperLink runat="server" ID="lnkLogin" Text="Log In" NavigateUrl="~/Login.aspx">
        </asp:HyperLink>
    </asp:Panel>
</asp:Content>

ASPX.CS file:

public partial class _Default : System.Web.UI.Page

//namespace AddFileToSQL
{
        //protected System.Web.UI.HtmlControls.HtmlInputFile uploadFile;
        protected System.Web.UI.HtmlControls.HtmlInputButton btnOWrite;
        protected System.Web.UI.HtmlControls.HtmlInputButton btnAppend;
        protected System.Web.UI.WebControls.Label Label1;
        protected static string inputfile = "";
        public static string targettable;
        public static string selection;

        // Number of controls added to view state
        protected int default_NumberOfControls
        {
            get
            {
                if (ViewState["default_NumberOfControls"] != null)
                {
                    return (int)ViewState["default_NumberOfControls"];
                }
                else
                {
                    return 0;
                }
            }
            set
            {
                ViewState["default_NumberOfControls"] = value;
            }
        }

        protected void uploadFile_onclick(object sender, EventArgs e)
        {
        }

        protected void Load_GridData()
        {
            //GridView1.DataSource = ADONET_methods.DisplaySchemaTables();
            //GridView1.DataBind();
        }

        protected void btnOWrite_Click(object sender, EventArgs e)
        {
            if (uploadFile.PostedFile.ContentLength > 0)
            {
                feedbackLabel.Text = "You do not have sufficient access to overwrite table records.";
            }
            else
            {
                feedbackLabel.Text = "This file does not contain any data.";
            }
        }

        protected void btnAppend_Click(object sender, EventArgs e)
        {
            string fullpath = Page.Request.PhysicalApplicationPath;

            string path = uploadFile.PostedFile.FileName;

            if (File.Exists(path))
            {
                // Create a file to write to.
                try
                {
                    StreamReader sr = new StreamReader(path);
                    string s = "";
                    while (sr.Peek() > 0)
                        s = sr.ReadLine();
                    sr.Close();
                }
                catch (IOException exc)
                {
                    Console.WriteLine(exc.Message + "Cannot open file.");
                    return;
                }
            }

            if (uploadFile.PostedFile.ContentLength > 0)
            {

                inputfile = System.IO.File.ReadAllText(path);
                Session["Message"] = inputfile;
                Response.Redirect("DataMatch.aspx");
            }
            else
            {
                feedbackLabel.Text = "This file does not contain any data.";
            }
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            if (Request.IsAuthenticated)
            {
                WelcomeBackMessage.Text = "Welcome back, " + User.Identity.Name + "!";

                // Reference the CustomPrincipal / CustomIdentity
                CustomIdentity ident = User.Identity as CustomIdentity;
                if (ident != null)
                    WelcomeBackMessage.Text += string.Format(" You are the {0} of {1}.", ident.Title, ident.CompanyName);

                AuthenticatedMessagePanel.Visible = true;
                AnonymousMessagePanel.Visible = false;
                if (!Page.IsPostBack)
                {
                    Load_GridData();
                }                                
            }
            else
            {
                AuthenticatedMessagePanel.Visible = false;
                AnonymousMessagePanel.Visible = true;
            }
        }

        protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
        {
            GridViewRow row = GridView1.SelectedRow;
            targettable = row.Cells[2].Text;
        }
    }
+1  A: 

Probably, class in file Default.Designer.cs contains two declarations of btnOWrite.

Try to delete at least one, or both variables.

Or if your project is a web application, delete whole designer file and in the context menu of Default.aspx choose 'Convert to web application', this will regenerate designer file.

abatishchev
Good call. I fixed the problem now. The problem was in my ASPX.CS file://protected System.Web.UI.HtmlControls.HtmlInputButton btnOWrite; //protected System.Web.UI.HtmlControls.HtmlInputButton btnAppend;
salvationishere
+1  A: 

when you have a control made declaritively such as

<asp:Button ID="someID" runat="server" />

it instantiates a private member variable named someID. If you look at your class, you'll see this line

protected System.Web.UI.HtmlControls.HtmlInputButton btnOWrite;

Basically, you've declared 2 controls with the same name. One in the mark up and one in the code behind. Just delete the declaration from your code behind file.

Seattle Leonard