1

这个问题必须有一个简单的解决方案,但看在上帝的份上,我无法弄清楚!

我不太习惯将数据输出到 Excel,因为我通常使用 Business Objects 等报告工具。但是,我只是想修改现有 C# Web 应用程序上的现有报告。我将 25 个额外的数据列附加到 Excel 工作表。我编写了一个简单的存储过程,它接受参数并输出一行 25 列的数据。然后我调用这个函数来执行每个mentee_id我传入它的函数。它工作得很好,但它在 25 列之前添加了一个空白列。如果有人有任何建议,我将非常感激......

//here is the function that executes the stored procedure:
protected string GetServiceCodes_byColumns(object mentee_id)
{
    //string id = mentee_id.ToString();
    //string id = "4530";  //for testing            
    string value = "0";
    string retString = string.Empty;

    try
    {            
        //Displays current information from the database
        string strConn = ConfigurationManager.AppSettings.Get("SQLConnectionString");
        SqlConnection myDBConnection = new SqlConnection(strConn);
        string sProc = ("[spMSSreport_MenteeSummaryByCenter_ServiceCodes]");
        SqlCommand spCmd = new SqlCommand(sProc, myDBConnection);
        spCmd.CommandType = CommandType.StoredProcedure;
        SqlParameter pCntr = new SqlParameter("@cntr", ddlCenter.SelectedValue);
        SqlParameter pStartDate = new SqlParameter("@start", txtStartDate.Text);
        SqlParameter pEndDate = new SqlParameter("@end", txtEndDate.Text);
        SqlParameter pUserID = new SqlParameter("@userid", mentee_id);

        spCmd.Parameters.Add(pCntr);
        spCmd.Parameters.Add(pStartDate);
        spCmd.Parameters.Add(pEndDate);
        spCmd.Parameters.Add(pUserID);

        myDBConnection.Open();         
        SqlDataReader rdr = spCmd.ExecuteReader();     //should retrieve one row with 25 columns 
        rdr.Read();                      

        for (int i = 0; i < 25; i++)
        {
            retString += "<td align='right'>" + rdr.GetValue(i).ToString() + "</td>";               
        }
        value = retString;               

        dr.Close();
        myDBConnection.Close();
    }
    catch (Exception ex)
    {
        Response.Write(ex);
    }
    return value;
}

// 这里是调用函​​数的aspx位(它是调用函数的最后一行)

<ItemTemplate>
    <tr valign="top">
        <td><%#DataBinder.Eval(Container.DataItem, "MentorName" ) %></td>
        <td><%#DataBinder.Eval(Container.DataItem, "MenteeName" ) %></td>
        <td><%#DataBinder.Eval(Container.DataItem, "MenteeWSUID" ) %></td>
        <td><%#DataBinder.Eval(Container.DataItem, "gender" ) %></td>
        <td><%#DataBinder.Eval(Container.DataItem, "sttype" ) %></td>
        <td><%#DataBinder.Eval(Container.DataItem, "ethniccd")%></td>
        <td><%#DataBinder.Eval(Container.DataItem, "center1" ) %></td>
        <td><%#DataBinder.Eval(Container.DataItem, "center2" ) %></td>
        <td><%#DataBinder.Eval(Container.DataItem, "TMPcollege" ) %></td>
        <td><%#DataBinder.Eval(Container.DataItem, "FCOC" ) %></td>
        <td><%#DataBinder.Eval(Container.DataItem, "CAMP" ) %></td>
        <td><%#DataBinder.Eval(Container.DataItem, "SSS" ) %></td>
        <td><%#DataBinder.Eval(Container.DataItem, "CSF" ) %></td>
        <td><%#DataBinder.Eval(Container.DataItem, "Lead1000" ) %></td>
        <td><%#DataBinder.Eval(Container.DataItem, "year" ) %></td>
        <td><%#DataBinder.Eval(Container.DataItem, "term" ) %></td>
        <td><%#DataBinder.Eval(Container.DataItem, "fieldofstudy" ) %></td>
        <td><%#DataBinder.Eval(Container.DataItem, "street" ) %></td>
        <td><%#DataBinder.Eval(Container.DataItem, "city" ) %></td>
        <td><%#DataBinder.Eval(Container.DataItem, "st" ) %></td>
        <td><%#DataBinder.Eval(Container.DataItem, "zip" ) %></td>
        <td><%#DataBinder.Eval(Container.DataItem, "phone" ) %></td>
        <td><%#DataBinder.Eval(Container.DataItem, "email" ) %></td>
        <td><%#DataBinder.Eval(Container.DataItem, "email2" ) %></td>
        <td><%#DataBinder.Eval(Container.DataItem, "AssignedMentor" ) %></td>
        <td><%#DataBinder.Eval(Container.DataItem, "AssignedMentor2" )%></td>
        <td><%#DataBinder.Eval(Container.DataItem, "AssignedMentor3" )%></td>
        <td><%#DataBinder.Eval(Container.DataItem, "AssignedMentor4" )%></td>
        <td><%#DataBinder.Eval(Container.DataItem, "AssignedMentor5" )%></td>
        <td><%#DataBinder.Eval(Container.DataItem, "mentor_and_mentee" ) %></td>
        <td><%#DataBinder.Eval(Container.DataItem, "active" ) %></td>
        <td><%#DataBinder.Eval(Container.DataItem, "inactive_reason" ) %></td>
        <td align="right"><%#GetEngagementLevel(DataBinder.Eval(Container.DataItem, "mentee_id") ) %></td>
        <td align="right"><%#DataBinder.Eval(Container.DataItem, "A" ) %></td>  
        <td align="right"><%#DataBinder.Eval(Container.DataItem, "B" ) %></td>  
        <td align="right"><%#DataBinder.Eval(Container.DataItem, "C" ) %></td>  
        <td align="right"><%#DataBinder.Eval(Container.DataItem, "D" ) %></td>  
        <td align="right"><%#DataBinder.Eval(Container.DataItem, "E" ) %></td>  
        <td align="right"><%#DataBinder.Eval(Container.DataItem, "F" ) %></td>  
        <td align="right"><%#DataBinder.Eval(Container.DataItem, "G" ) %></td>  
        <td align="right"><%#DataBinder.Eval(Container.DataItem, "H" ) %></td>  
        <td align="right"><%#DataBinder.Eval(Container.DataItem, "I" ) %></td>  
        <td align="right"><%#DataBinder.Eval(Container.DataItem, "J" ) %></td>  
        <td align="right"><%#DataBinder.Eval(Container.DataItem, "K" ) %></td>  
        <td align="right"><%#DataBinder.Eval(Container.DataItem, "L" ) %></td>  
        <td align="right"><%#DataBinder.Eval(Container.DataItem, "M" ) %></td>  
        <td align="right"><%#DataBinder.Eval(Container.DataItem, "N" ) %></td>  
        <td align="right"><%#DataBinder.Eval(Container.DataItem, "O" ) %></td> 
        <td align="right"><%#GetServiceCodes_byColumns(DataBinder.Eval(Container.DataItem, "mentee_id") )%></td>           
   </tr>       
</ItemTemplate>
4

1 回答 1

0

看来您正在将 25 个 td 嵌入到最终的 td 中。从最后一行中删除 <td align='right' ,所以它很简单:

<%#GetServiceCodes_byColumns(DataBinder.Eval(Container.DataItem, "mentee_id") )%>
于 2012-06-15T01:26:29.820 回答